IE7에서 SP.UI에 $create_DialogOptions이라는 객체가 존재하지 않는 경우.
오늘 우연히 테스트하다가 SP.UI 객체는 있으나, $create_DialogOptions 라는 객체가 없어서 Undefined를 뱉어내는 경우를 보게 되었다.
해당 문제는 페이지가 로드 될때 showdialog를 띄우려고 작성하였으며, IE 7에서 script 렌더링 속도가 늦어서 위와 같은 결과가 나타난 것으로 예상된다.
그래서 구글링하니 바로 나오는 해결 방법은 아래와 같다.
ExecuteOrDelayUntilScriptLoaded(function () { // Code.... }, "sp.js");
sp.js가 재대로 로드되지 못하여 생긴 것으로 해당 js파일이 로드 된 후 실행하게 해 주는 역할을 한다.
결론은 피시가 구려서 그렇다. 혹은 sp.js가 너무 무겁다라는 이야기….
해당 메소드(ExecuteOrDelayUntilScriptLoaded)에 자세한 내용은 여기를 선택하여 이동하시기 바랍니다.
아래 코드는 완성 코드입니다.
전 단지 Dialog만 띄우려 했을 뿐이었습니다.
if (SP.UI.$create_DialogOptions) { var options = SP.UI.$create_DialogOptions(); options.url = strUri + strParam; options.height = iHeight; options.width = iWidth; var objModal = SP.UI.ModalDialog.showModalDialog(options); } else { ExecuteOrDelayUntilScriptLoaded(function () { var options = SP.UI.$create_DialogOptions(); options.url = strUri + strParam; options.height = iHeight; options.width = iWidth; var objModal = SP.UI.ModalDialog.showModalDialog(options); }, "sp.js"); }
이상입니다.
감사합니다~
'Troubleshoot' 카테고리의 다른 글
'targetFramework' 특성을 인식할 수 없습니다. (1) | 2011.09.15 |
---|---|
A timeout has occurred while invoking commands in SharePoint host process. (0) | 2011.08.05 |
원격 호스트와 통신하는 동안 오류가 발생했습니다. 오류 코드는 0x80070057입니다. (2) | 2011.05.24 |
C# SiteMapProvider [HttpException] {0} is not a valid virtual path(올바른 가상 경로가 아닙니다.) (0) | 2011.04.04 |
[어셈블리 바인딩 로깅이 꺼져 있습니다.] 어셈블리 바인딩 로깅 시작 방법 (1) | 2011.03.30 |