디버그 모드 객체가 예상되는 경우 sp.js로 executeRordElayuntInciptsscript로드되었습니다
-
10-12-2019 - |
문제
현재 SharePoint 페이지에로드되는 JavaScript 파일이 있습니다.
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가 아닌이 의미가 있습니다. 프로덕션 서버에 도달 할 때와 같이 JavaScript 코드에 sp.debug.js를 넣으려면 sp.debug.js를 사용하지 않을 것입니다. ExecuteRordElayUntilScriptOlded (JSFunction (), "sp.js")를 가진 코드가있는 모든 코드를 사용하기 전에이 일이 발생하지 않았습니다. JavaScript에서 #ifdebug 문과 같은 두 환경에서 작동하도록이를 얻는 방법이 있습니까? 또는 다른 아이디어.
해결책
ExecuteRordElayuntilscriptLoaded 잘못 사용해야합니다.함수 이름은 그것을 실행하지 않습니다.
다음과 같이 :
jQuery(document).ready(function() {
ExecuteOrDelayUntilScriptLoaded(myfunction, "sp.js");
});
.
MyFunction에서 "()"를 제거합니다.이제는 예상대로 작동해야합니다
다른 팁
이러한 목적으로 jQuery를 사용하지 마십시오. SharePoint Embedded 기능을 대신 사용하십시오 :
var myFunction = function(){
ExecuteOrDelayUntilScriptLoaded(yourfunction, "sp.js");
}
_spBodyOnLoadFunctionNames.push("myFunction");
.
또는 익명 함수
_spBodyOnLoadFunctionNames.push(function(){
ExecuteOrDelayUntilScriptLoaded(yourfunction, "sp.js");
});
.