IT 서비스 바라보기/Programming
showModalDialog와 dialogArguments 이용하기
하늘다래
2008. 5. 10. 14:34
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>
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>
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>
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;
}
{
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();
}
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();
}