본문 바로가기

IT 서비스 바라보기/Programming

showModalDialog와 dialogArguments 이용하기



1. GET 으로 보내기 (JavaScript 또는 JSP 로 확인)

<script>
    function OpenModal() {
        var sslect = document.forms["frmgblist"].sslect.value;
        var strModalValue = showModalDialog("include/calendar.jsp?gap=" + sslect,'searchForm',"dialogWidth:205px; dialogHeight: 270px; scroll:yes; resizable: No; status: No; help: No; center: No; screenX:" + x + "px; dialogleft:" +x+ "px; screenY:"+y+"px; dialogtop:"+ y + "px"");
    }
</script>


2. 인자에 window 주기 (JavaScript 로 확인)

<script>
    function OpenModal() {
        var strModalValue = showModalDialog("./?doc=buddy/forward22.php?kk=a", window, 'dialogHeight=100, dialogWeight=100, dialogLeft=0, dialogTop=200');
    }
</script>

 

2번 방법을 쓸때는 Modal 페이지에서 var myModal = window.dialogArguments; 이렇게 하면 opener 의 Element 로 바로 접근이 가능합니다.
ex) alert(myModal.sslect.value);


Modal 창을 사용하는 경우 자식창에서 부모창의 Element 로 접근이 안되고 "액세스가 불가능합니다." 라는 메세지가 나온다면 자식창과 부모창의 스크립트 가장 상위(<head>와 </head>사이) 에 아래 소스를 넣어서 domain을 맞춰 줍니다.

<script>
domain.name = 'shagall.tistory.com'; // 도메인주소(http:// 를 뺀 주소)
// 위 방법에서 오류가 날 경우 document.domain="shagall.tistory.com" 로 바꿔서 해보세요.
</script>



또 다른 방법 간단한 소스

// 부모창에 자바스크립트 부분
    function SABUN_SELECT(sSABUN)
    {
        var strURL  = "PAY1010_1.aspx?SABUN=" + sSABUN;
        var strPos = "dialogWidth:400px;dialogHeight:300px;status:no;scroll:no;resizable:no";
        var objReturnValue = showModalDialog(strURL,window,strPos);
       
        alert(objReturnValue.SABUN);
        alert(objReturnValue.SABUN_NAME);
        document.all.txtSABUN_CODE.value = objReturnValue.SABUN;
        document.all.t0SABUN_NAME.value = objReturnValue.SABUN_NAME;
    }
// 자식창에 자바스크립트 부분
    function DblClick_InputValue(SABUN, SABUN_NAME) {
            var opener = window.dialogArguments;          // 부모의 window 자체를 넘겨 받았으므로 부모의 모든객체에 access 할수 있다.
            var objReturn = new Object();
           
            objReturn.SABUN = SABUN;
            objReturn.SABUN_NAME = SABUN_NAME;
            window.returnValue = objReturn;      // object 를 returnValue 로 지정한다.
            window.close();
        }