SharePoint 2013 でレンダリングの完了後に表示テンプレートでクライアント スクリプトを実行する

原文の記事の投稿日: 2012 年 12 月 5 日 (水曜日)

先日、友人の Bryan から、レンダリングを実行した後に独自の javascript 関数を実行する表示テンプレートを作成するにはどうすればよいかという良い質問がありました。しばらく調べた後、他の友人の Jesus がこの問題に対する魔法の解決策を共有してくれました。テンプレートでのレンダリング後に独自の関数を呼び出すには、表示テンプレートの javascript セクションに以下を追加する必要があります。つまり、javascript で、テンプレートのレンダリングに使用する他の js を含むページの最初の <div> タグの下に追加します。その javascript に、次のようなコールアウトを追加する必要があります。

<!--#_
AddPostRenderCallback(ctx, function()
{
//code to execute
});
_#-->

 

これだけでは Bryan の問題を解決するのに十分ではありませんでした。彼は必要な追加の CSOM 呼び出しのために ClientContext を取得する必要がありました。結局のところ、検索結果ページですべてのスクリプトが読み込まれるわけではないため、このデリゲートで作成しようとするだけではうまくいきません。そこで、現在のコンテキストを取得するために、Srch.ScriptApplicationManager.get_clientRuntimeContext() を呼び出すことができます。表示テンプレートで読み込む必要があるスクリプトが他にもある場合は、EnsureScriptFunc メソッドを EnsureScriptFunc("sp.js", "SP.ClientContext", function () { //callback }); のように使用できます。

これはローカライズされたブログ投稿です。原文の記事は、「Running Client Script in a Display Template After Rendering is Complete in SharePoint 2013」をご覧ください。