728x90

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();

}




출처 : silklover님 블로그 (http://somnusnote.tistory.com/entry/Chrome%EC%97%90%EC%84%9C-ModalDialog%EB%A1%9C%EB%B6%80%ED%84%B0-returnValue%EB%A5%BC-%EB%B0%9B%EC%A7%80-%EB%AA%BB-%ED%95%98%EB%8A%94-%EB%AC%B8%EC%A0%9C%EC%9D%98-Workaround)

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기