본문 바로가기

Troubleshoot

[Sharepoint 2010] SP.UI.$create_DialogOptions is undefined (IE7)

 

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");
}

 

이상입니다.

감사합니다~