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”이 대입된다.