window.showModalDialog / window.showModelessDialog

window.showModalDialog / window.showModelessDialog

IE4에서부터 window.open 대신 사용할 수 있었던 코드.

window.alert 함수나 window.confirm 함수처럼 일단 쇼모달 코드가 실행되면 해당 윈도우가 닫힐 때까지 다음줄로 진행되지 않는다.
설명했다시피 동기식이므로 절차적으로 이해하기/작성하기 쉽다는 장점이 있다.

showModalDialog 는 뒤쪽 윈도우을 클릭할 수 없게 통제되고, showModelessDialog 는 뒤쪽 윈도우를 클릭 가능하다.

과거에는 많이 썼을지 몰라도 사용금지이며, 걷어내야할 대상이다.
각종 모바일이나 크롬 브라우저 등에서 작동하지 않는 코드, 즉 표준이 아닌 코드이므로 사실상 사용금지다.

1. window.showModalDialog

window.showModalDialog(주소, 넘겨줄객체, 창옵션);

위와 같이 쓴다. 예를 들어 아래와 같이 쓴다.

var url = “collee.jsp”;
var paramObj = {};
var option = “center:yes; status:no; help:no; resizable:no; scroll:no; dialogWidth:300px; dialogHeight:200px;”;

var result = window.showModalDialog(url, paramObj, option);

2. window.dialogArguments

쇼모달 창으로 열린 페이지(ex: collee.jsp)에서는 window.dialogArguments 로 paramObj를 받는다.
예를 들어 window.onload 함수 안에서 var inputObj = window.dialogArguments; 이런식으로 받을 수 있다.

이 때 참조값을 바라보므로, inputObj.aaa = “newValue”; 식으로 코딩하면,

오프너 페이지(ex: coller.jsp)의 paramObj 객체를 조작 가능하다는 장점이 있다.

3. window.returnValue

또한 쇼모달 창으로 열린 페이지(ex: collee.jsp)에서 window.returnValue 값을 부여하면, 창이 닫혔을 때 해당값이 리턴된다.

예를 들어 오프너 창에서는 var result = window.showModalDialog(url, paramObj, option); 라는 코드로 쇼모달 창을 열고,

쇼모달 창 내에서 window.returnValue = “111”; 이라고 코딩했다면,

쇼모달 창을 닫을 경우 오프너의 var result 변수에 값 “111”이 대입된다.