EXECUTEDELAYUNTILSSPRICTORED с SP.JS, когда ожидается ожидаемый объект режима отладки
-
10-12-2019 - |
Вопрос
jQuery(document).ready(function() {
ExecuteOrDelayUntilScriptLoaded(myfunction(), "sp.js");
});
myfunction = function(){
/*Do something here.*/
};
.
Теперь JavaScript работает просто хорошо, однако на странице списка она предотвращает загрузку ленты на вкладку «Список». В консоли я получаю ниже ошибки.
Script5007: Ожидаемый объект init.debug.js, линия 5153 символ 5 Ошибка.
Даже если я комментирую всю функцию, чтобы она выглядела точно, как указано выше, я все еще получаю сообщение об ошибке.
Я заметил, что если я изменим «SP.JS» на «SP.DEBUG.JS», я не получаю сообщение об ошибке. От поиска сценариев, которые загружаются на странице, это имеет смысл как SP.DEBUG.JS загружен и не SP.JS. Я не очень хочу поставить sp.debug.js в код JavaScript, что и достигает производственных серверов, они не будут использовать sp.debug.js. Я никогда не замечаю, что это произойдет раньше с любым кодом, имеющим executeordeLayUntilscriptloadloaded (jsfunction (), "sp.js"). Есть ли способ получить его для работы в обеих средах, таких как с помощью a #ifdebug stake в JavaScript? Или какая-то другая идея.
Решение
Вы используете ExecuteOrdeLayUntilscriptledword неправильно, вы должны использоватьИмя функции, не выполняйте его.
Вот так:
jQuery(document).ready(function() {
ExecuteOrDelayUntilScriptLoaded(myfunction, "sp.js");
});
.
Обратите внимание, что удалил «()» из Myфункции.Теперь он должен работать, как ожидалось,
Другие советы
Не используйте jQuery для таких целей, вместо этого используйте встроенные функции SharePoint:
var myFunction = function(){
ExecuteOrDelayUntilScriptLoaded(yourfunction, "sp.js");
}
_spBodyOnLoadFunctionNames.push("myFunction");
.
или анонимная функция
_spBodyOnLoadFunctionNames.push(function(){
ExecuteOrDelayUntilScriptLoaded(yourfunction, "sp.js");
});
.