ExecuteDelayUnTilCiscript用SP.js在调试模式对象预期时
-
10-12-2019 - |
题
我目前有一个在我的SharePoint页面中加载的JavaScript文件。
jQuery(document).ready(function() {
ExecuteOrDelayUntilScriptLoaded(myfunction(), "sp.js");
});
myfunction = function(){
/*Do something here.*/
};
.
现在JavaScript只运行Fine,但在列表页面上,它会阻止功能区加载列表选项卡。在控制台中,我得到以下错误。
script5007:对象预期init.debug.js,行5153字符5 错误。
即使我评论了所有功能,所以它看起来完全像上面,我仍然收到错误消息。
我注意到,如果我将“sp.js”更改为“sp.debug.js”,我就不会收到错误消息。从查看页面上加载的脚本,这使得sp.debug.js已加载而不是sp.js.我真的不想在javascript代码中放置sp.debug.js,因为它到达生产服务器时,它们不会使用sp.debug.js。我从来没有注意到此之前发生这种情况,其中任何代码都有executeordelayuntilscript loaded(jsfunction(),“sp.js”)。有没有办法将其用于两个环境,就像JavaScript中的#ifdebug语句一样?或其他一些想法。
解决方案
您正在使用 executeordelayuntilscripted 错误,您应该使用函数名称,不执行它。
如下:
jQuery(document).ready(function() {
ExecuteOrDelayUntilScriptLoaded(myfunction, "sp.js");
});
.
请注意,我从MyFunction中删除了“()”。现在它应该按照预期工作
其他提示
请勿为此目的使用jQuery,请使用SharePoint嵌入功能:
var myFunction = function(){
ExecuteOrDelayUntilScriptLoaded(yourfunction, "sp.js");
}
_spBodyOnLoadFunctionNames.push("myFunction");
.
或匿名功能
_spBodyOnLoadFunctionNames.push(function(){
ExecuteOrDelayUntilScriptLoaded(yourfunction, "sp.js");
});
.