Java_Web

Chrome에서 ModalDialog로부터 returnValue를 받지 못 하는 문제의 Workaround

silklover 2012. 8. 8. 15:11

IE나 Firefox에서는 보통 쓰던대로 아래와 같이 넘기고 받으면 끝이었다.


Parent.html

    var retVal = window.showModalDialog("popup.html", null,);

    if (retVal) {

        $("#some_id").val(retVal.some_id);

        $("#some_name").val(retVal.some_name);

    }


popup.html

function fn_Click(some_id, some_name) {

    var obj = new Object();

    obj. some_id  =  some_id ;

    obj. some_name = some_name ;

    window.returnValue = obj;

    self.close();

}


그런데, Chrome에서는 popup에서 받은 retVal이라는 변수가 undefined이다.

이럴 때 아래와 같이 Chrome 브라우저에 대한 추가처리코드를 추가해 주면 해결된다.


Parent.html

    var retVal = window.showModalDialog("popup.html", null,);


    if (retVal == undefined)

    retVal = window.returnValue;


    if (retVal) {

        $("#some_id").val(retVal.some_id);

        $("#some_name").val(retVal.some_name);

    }


popup.html

function fn_Click(some_id, some_name) {

    var obj = new Object();

    obj. some_id = some_id ;

    obj. some_name = some_name ;

    if (window.opener)

        window.opener.returnValue = obj; 

    window.returnValue = obj;

    self.close();

}