2016-04-06 6 views
1

Я довольно часто использовал SP.SOD.executeOrDelayUntilScriptLoaded (func, depScriptFileName) в своем JSOM (https://msdn.microsoft.com/en-us/library/ff411788(v=office.14).aspx). Кто-нибудь там использовал SP.SOD.executeOrDelayUntilEventNotified (func, eventName) (https://msdn.microsoft.com/en-us/library/ff410354(v=office.14).aspx) успешно? Для eventName это как-то просто, как «щелчок»? Я искал в Интернете, но не нашел ничего полезного. Любая обратная связь оценена.Успешное использование SP.SOD.executeOrDelayUntilEventNotified (func, eventName) в CSOM/JSOM?

+0

Он используется для обнаружения события SharePoint («_spEventWebPartAdderReady») в ответ на этот вопрос: http://stackoverflow.com/questions/22318388/sp-ribbon-webpartcomponent-getwebpartadder-returns-undefined – Thriggle

+0

Спасибо Thriggle, хороший ответ – Matt

ответ

2

В основном разница между этими функциями, которая в первом случае указывается имя файла из клиентской библиотеки, например sp.js (параметр depScriptFileName). В последнем случае следует указать название события, например "sp.scriptloaded-sp.js" (параметр eventName)

Вот декларация SP.SOD.executeOrDelayUntilEventNotified(func, eventName) из библиотеки клиента SharePoint init.js:

function ExecuteOrDelayUntilScriptLoaded(func, depScriptFileName) { 
    depScriptFileName = depScriptFileName.toLowerCase(); 
    var eventName = "sp.scriptloaded-" + depScriptFileName; 

    return ExecuteOrDelayUntilEventNotified(func, eventName); 
} 

О названиях событий

Список имен событий хранится в глобальной переменной с именем g_ExecuteOrWaitJobs. Для каждого файла библиотеки SharePoint используется предопределенное имя события, например, для файла sp.clienttemplates.js соответствующего имя события sp.scriptloaded-clienttemplates.js


Позволяет продемонстрировать, как использовать оба SP.SOD.executeOrDelayUntilScriptLoaded(func, depScriptFileName) и SP.SOD.executeOrDelayUntilEventNotified(func, eventName) функции.

Для того, что цели давайте познакомимся простой пример, который печатает SP.Web Название свойства:

function printWebInfo(){ 
     var ctx = SP.ClientContext.get_current(); 
     var web = ctx.get_web(); 
     ctx.load(web,'Title'); 
     ctx.executeQueryAsync(
     function(){ 
      console.log(web.get_title()); 
     }, 
     function(sender,args){ 
      console.log(args.get_message()); 
     }); 
} 

В следующем примере

ExecuteOrDelayUntilScriptLoaded(printWebInfo, "sp.js"); 

printWebInfo функция будет вызываться один раз Клиентская библиотека SharePoint sp.js загружена.

Тот же самый пример, который использует SP.SOD.executeOrDelayUntilEventNotified(func, eventName) будет выглядеть следующим образом:

var eventName = "sp.scriptloaded-sp.js"; 
ExecuteOrDelayUntilEventNotified(printWebInfo,eventName); 

где "sp.scriptloaded-sp.js" название события используется для определения того, загружен ли sp.js библиотека или нет.

+1

Спасибо Вадиму за сообщение, я смог изучить все события в g_ExecuteOrWaitJobs и посмотреть все события и хороший пример использования – Matt