在 CSOM/JSOM 中成功使用 SP.SOD.executeOrDelayUntilEventNotified(func, eventName)?
Successful use of SP.SOD.executeOrDelayUntilEventNotified(func, eventName) in CSOM/JSOM?
我在我的 JSOM (https://msdn.microsoft.com/en-us/library/ff411788(v=office.14).aspx). Has anybody out there used SP.SOD.executeOrDelayUntilEventNotified(func, eventName) (https://msdn.microsoft.com/en-us/library/ff410354(v=office.14).aspx) 中成功地使用了 SP.SOD.executeOrDelayUntilScriptLoaded(func, depScriptFileName) 吗?对于 eventName 是否像 "click" 一样简单?我在网上搜索过,但没有找到任何有用的东西。感谢任何反馈。
这些函数之间的主要区别在于,在第一种情况下,指定了来自客户端库的文件名,例如 sp.js
(参数 depScriptFileName
)。在后一种情况下,应指定事件名称,例如 "sp.scriptloaded-sp.js"
(参数 eventName
)
这是来自 SharePoint 客户端库 init.js
的 SP.SOD.executeOrDelayUntilEventNotified(func, eventName)
的声明:
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
Title 属性:
的简单示例
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
库。
我在我的 JSOM (https://msdn.microsoft.com/en-us/library/ff411788(v=office.14).aspx). Has anybody out there used SP.SOD.executeOrDelayUntilEventNotified(func, eventName) (https://msdn.microsoft.com/en-us/library/ff410354(v=office.14).aspx) 中成功地使用了 SP.SOD.executeOrDelayUntilScriptLoaded(func, depScriptFileName) 吗?对于 eventName 是否像 "click" 一样简单?我在网上搜索过,但没有找到任何有用的东西。感谢任何反馈。
这些函数之间的主要区别在于,在第一种情况下,指定了来自客户端库的文件名,例如 sp.js
(参数 depScriptFileName
)。在后一种情况下,应指定事件名称,例如 "sp.scriptloaded-sp.js"
(参数 eventName
)
这是来自 SharePoint 客户端库 init.js
的 SP.SOD.executeOrDelayUntilEventNotified(func, eventName)
的声明:
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
Title 属性:
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
库。