我目前有一个在我的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");
});
.

许可以下: CC-BY-SA归因
scroll top