Debug Modeオブジェクトが予想されるときにSP.JSを使用したexecureDelayUnTilloaded
-
10-12-2019 - |
質問
現在、私のSharePointページにロードされるJavaScriptファイルを持っています。
jQuery(document).ready(function() {
ExecuteOrDelayUntilScriptLoaded(myfunction(), "sp.js");
});
myfunction = function(){
/*Do something here.*/
};
.
今JavaScriptが正しく実行されますが、リストページではリボンがリストタブをロードするのを防ぎます。コンソールで私は誤りを下回る。
Script5007:オブジェクトがinit.debug.js、4153文字5 エラー
すべての機能をコメントしても上記のように正確に見えてもエラーメッセージが表示されます。
"SP.JS"を "sp.debug.js"に変更した場合、エラーメッセージが表示されません。ページにロードされているスクリプトを見ることから、SP.Debug.jsがロードされ、sp.jsではなく意味があります。私は実際のJavaScriptコードにSp.debug.jsを貼り付けたくないので、プロダクションサーバーに到達したときにsp.debug.jsを使用しません。これがexecuteOrdelayUntilScriptLoaded(jsfunction()、 "sp.js")を持つコードでこれまでに起こることはありません。 JavaScriptの#ifdebugステートメントのように、両方の環境のために機能する方法はありますか?またはその他の考え方。
解決
execueDelayunTilloaded 間違っている、使用する必要があります。機能名、実行されていません。
これと同じように:
jQuery(document).ready(function() {
ExecuteOrDelayUntilScriptLoaded(myfunction, "sp.js");
});
.
故障から「()」を取り除いたことに注意してください。今、それは期待どおりに機能するべきです
他のヒント
そのような目的でjQueryを使用しないで、代わりにSharePoint埋め込み機能を使用します。
var myFunction = function(){
ExecuteOrDelayUntilScriptLoaded(yourfunction, "sp.js");
}
_spBodyOnLoadFunctionNames.push("myFunction");
.
または匿名関数
_spBodyOnLoadFunctionNames.push(function(){
ExecuteOrDelayUntilScriptLoaded(yourfunction, "sp.js");
});
.