쓸만한 글

showModalDialog와 반환값

봄돌73 2006. 7. 6. 21:21
출처 : http://blog.naver.com/kimjeehoon12?Redirect=Log&logNo=24261863



JScript의 showModalDialog나 showModelessDialog 메소드를 통해 웹 페이지 대화상자를 오픈시키면 window.open()을 사용한 경우보다 더 깔끔하게 대화상자를 오픈시킬 수 있습니다. 이것은 많은 분들이 알고 계시던데, 대화상자에서 처리한 결과값을 원래의 브라우져로 전달해 주는 방법을 모르시는 분들이 많은 것 같더군요.<P>

showModalDialog나 showModelessDialog로 오픈시킨 대화상자에서는 returnValue라는 변수에 어떠한 값을 넣어줌으로써 대화상자를 오픈시킨 브라우저에 특정값을 리턴할 수 있습니다.<P>

예제를 보여드리죠.<P>
<FIELDSET>
<LEGEND><B>브라우져의 JScript 예</B></LEGEND>
&nbsp;
var nTest = window.showModalDialog("dialog.html","","help=no; scroll=no; dialogWidth=350px; dialogHeight:300px; center:yes");
&nbsp;
</FIELDSET><P>

<FIELDSET>
<LEGEND><B>dialog.html의 JScirpt 예</B></LEGEND>
&nbsp;
window.returnValue = "1111";<BR>
window.close();<BR>
&nbsp;
</FIELDSET><P>

위와 같은 식으로 대화상자의 returnValue를 1111로 설정해 주면, 대화상자가 닫힐때 원래 브라우져의 nTest라는 변수에는 1111의 값이 들어가게 됩니다.<BR>
주의하십시오! 대화상자가 닫히는 순간에 브라우져로 값이 전달되는 것이지, returnValue에 값이 넣어질때 브라우져로 값이 전달되는 것이 아닙니다. 말 그대로 return값을 정해주는 것입니다.<P>

만약 전달해주어야 하는 값이 한개가 아니라 여러개일때는 어떻게 해야 할까요?<BR>
그때는 어레이나 구조체를 사용하시면 됩니다.<P>

<FIELDSET>
<LEGEND><B>dialog.html의 JScirpt 예 2탄</B></LEGEND>
&nbsp;
function oMultiValue(nWidth, nHeight)<BR>
{<BR>
    this.m_nWidth = nHeight;<BR>
    this.m_nHeight = nHeight;<BR>
}<BR>
&nbsp;
var oTransValue = new oMultiValue(10, 10);<BR>
window.returnValue = oTransValue;<BR>
window.close();<BR>
&nbsp;
</FIELDSET><P>

위 와 같이 oMultiValue라는 구조체(?)를 만들어 값을 넘겨주면 2개, 3개, 100개, 1000개의 값도 넘겨줄 수 있겠죠? 넘겨줄 수 있는 값은 오브젝트도 가능하고 스트링도 가능하고 어레이도 가능하며 그 어떤 값도 가능합니다.<