JS模态窗口返回值兼容问题解决方案

来源:互联网 发布:python 类继承 编辑:程序博客网 时间:2024/06/05 19:53

因系统要兼容原IE已使用的关闭方法,经调试测得,需对window.dialogArguments进行再较验,不然易出问题。


function OKEnd(vals) {    if (vals == null) vals = "TRUE";    if (typeof (window.opener) == "undefined") {        if (typeof (window.dialogArguments) != "undefined") {            if (window.dialogArguments && window.dialogArguments != null) {                window.opener = window.dialogArguments;                if (window.opener && window.opener != null) {                    window.opener.ReturnValue = vals;                }            }        }    }    else {        if (window.opener && window.opener != null) {            window.opener.ReturnValue = vals;        }    }    window.returnValue = vals;    self.close();}
返回值接收的,只需在原有IE的接收模式下,多较验一下opener就可以了,如下:
//选择变更部门         function SetOrganizeTree2() { var url="弹出页面";             var ret = window.showModalDialog(url, window, "dialogWidth=400px;dialogHeight=500px;status=no;help=no;scroll=yes;resizable=yes;");             if (typeof (ret) == "undefined") {                 ret = window.ReturnValue;             }             if (ret) {                 document.getElementById("hidDeptCode2").value = ret;                 document.getElementById("btnDeptCodeAdd").click();             }             return false;         }






JS模态窗口返回值兼容问题解决方案

1、打开弹出窗口时把 window 作为第二个参数传入。

 var result = window.showModalDialog(url, window, "dialogWidth=" + width + "px;dialogHeight=" + height + "px;resizable:yes;")

 if (typeof (result) == 'undefined') {

         result = window.ReturnValue;

     }

     return result;

2、在弹出窗口中,执行如下JS,以接收传入的window

 if (typeof (window.opener) == 'undefined') window.opener = window.dialogArguments;

 

3、弹出窗口关闭前,调用如下JS赋返回值

 window.retureValue = vals;

        if (window.opener && window.opener != null)

                window.opener.ReturnValue = vals;

 

        window.close();


博客园davidyang78原创,转载请保留此信息

 

原理探讨:

chrome下,标准方法,在弹出页面不回发的情况下,是可以返回值的。 有回发则不能正常返回值。此方法可以解决。

IE下标准方法,有时不明原因不能正确返回值,此方法可解决。

FF未详细测试,应该问题不大。

 

原创粉丝点击