Выполнение клиентского сценария в шаблоне отображения после завершения прорисовки в SharePoint 2013

Исходная статья опубликована в среду, 5 декабря 2012 г.

Мой друг Брайан недавно задал мне хороший вопрос о том, как создать шаблон отображения, который бы выполнял прорисовку, но затем запускал собственную функцию javascript. После проведения некоторых изысканий мой приятель Джизус смог выяснить, как решить эту задачу. Чтобы вызвать собственную функцию после прорисовки шаблона, требуется добавить это в раздел javascript шаблона отображения, то есть в код javascript, который добавляется после первого тега <div> на странице вместе с другим кодом javascript, используемым для прорисовки вашего шаблона. В этом коде javascript требуется добавить следующий внешний вызов:

<!--#_
AddPostRenderCallback(ctx, function()
{
//выполняемый код
});
_#-->

 

Однако это все равно не позволяло решить проблему Брайана. Ему требовалось получить ClientContext для некоторых дополнительных вызовов CSOM, которые он хотел выполнить. Выяснилось, что простая попытка создания в данном делегате не позволяет добиться желаемого, так как не выполняется загрузка всех сценариев на странице результатов поиска. Поэтому для получения текущего контекста можно выполнить вызов 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