본문 바로가기

개발/Java Script

[Tip] ModalDialog 사용 시 주의점

일반 팝업창이 아래와 같다면

szGroupUserSelectionURL = "javascript:popup( '" + szGroupUserSelectionURL + "',

'SelectOwnerURL', '570', '550', 'NO', 'NO');";

모달창은

szGroupUserSelectionURL = "javascript:window.showModalDialog('" + szGroupUserSelectionURL + "',

self ,'dialogWidth:580px;dialogHeight:580px;scroll:0;help:0;status:0');";

이렇게 window.showModalDialog로 뛰워주면 됩니다.

 

형식은 팝업창과 거의 유사하지만 유의해야 할 점이 있습니다.

 

1. 스크립트 호출문제

모달창에서는  href="javascript:스크립트명();" 이런식으로 호출해서 쓰면 브라우저에 스크립트명이 뜨고 원하는

액션이 일어나지 않습니다.

그래서 모달창으로 뜨는 창에서 스크립트를 호출할시에는 href="#" onclick="스크립트명();" 이런식으로 쓰셔야 합니다.

 

2. 부모창 호출문제

보통 팝업창에서는 opener. 해서 쓰면 parent창이 응답을 하지만,

모달창에서는 parent를 부를 경우, child창에서는 응답하지 않습니다.

이럴땐 dialogArguments를 이용합니다. 그래서 소스를 그대로 쓰실려면

var opener = window.dialogArguments; 이렇게 선언해서 opener를 쓰시면 되겠습니다.


3. Session 전달문제

팝업창(window.open)에서는 팝업창(window.open)으로 전달 가능하고,

모달창(showModalDialog)은 모달창(showModalDialog)으로 전달 가능합니다. ("<%=Session.SessionID%>"로 확인)

showModalDialog에서 window.open하면, 새로운 창으로 인식해서 session을 공유하지 못합니다.