关于chrome等浏览器不支持showModalDialog的解决方案

目前,新版本的chrome和opera、Firefox等浏览器已经不支持showModalDialog方法。

如果是没有接收返回值的,可以直接将window.showModalDialog改为window.open。

 

需要接收返回值的情况:

父页面设置:

var uIdName;

function chooseuser_m() {

var num = Math.random();

var str = "" + document.getElementById('wfUserIDs').value + "";

try {

    uIdName = window.showModalDialog("../../Choose/ChooseUser.aspx?tmp=" + num + "&rqstr=" + str + "", "window", "dialogWidth:650px;DialogHeight=520px;status:no;scroll=no;help:no");

    var arr = uIdName.split("|");

    for (var i = 0; i < arr.length; i++) {

        document.getElementById("wfUserIDs").value = arr[0];

        document.getElementById("wfUserNames").value = arr[1];

      }

    }

catch (e) {

     window.open("../../Choose/ChooseUser.aspx?tmp=" + num + "&rqstr=" + str + "", "window", "dialogWidth:650px;DialogHeight=520px;status:no;scroll=no;help:no");

    }

}

这里先将原来的方法改成window.open,接下来是子页面的设置:

    function sendFromChild() {

            if ((navigator.userAgent.indexOf('MSIE') >= 0) && (navigator.userAgent.indexOf('Opera') < 0)) {

                window.returnValue = chkSelect(); //chkSelect()获取一组数据

            }

            else {

                chkSelectChrome();

            }

            window.close();

        }



        //for chrome 2015-03-07

        function chkSelectChrome() {

            var uIdName = chkSelect();

            var arr = uIdName.split("|");

            for (var i = 0; i < arr.length; i++) {

                opener.document.all.wfUserIDs.value = arr[0]; //wfUserIDs

                opener.document.all.wfUserNames.value = arr[1];

            }

        }

这里只判断非IE下的方法,在chrome下测试通过,其他非IE浏览器没有测试。

opener.document.all.IDName.value //直接对父窗体赋值 ID必须对应 否则报错

window.showModalDialog与window.open所带的参数可以是一样的,弹出的窗口不会改变

你可能感兴趣的:(showModalDialog)