zoukankan      html  css  js  c++  java
  • 关于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所带的参数可以是一样的,弹出的窗口不会改变

  • 相关阅读:
    debian 安装deb软件
    Linux的发行版之间的联系和区别
    Linux软件包安装(rpm、yum、apt-get)
    在deepin中安装docker
    使用BeanUitls提高对象拷贝效率
    Nginx下载和安装与启动
    Spring Boot 的项目打包成的 JAR 包,制作成 docker 镜像并运行
    Java并发编程实战(使用synchronized实现同步方法)
    Java7并发编程实战(一) 守护线程的创建和运行
    Java7并发编程实战(一) 线程的等待
  • 原文地址:https://www.cnblogs.com/bo10296/p/4320000.html
Copyright © 2011-2022 走看看