JS模态窗口返回值兼容问题的完美解决方法


Posted in Javascript onMay 28, 2016

因系统要兼容原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();

原理探讨:

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

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

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

以上这篇JS模态窗口返回值兼容问题的完美解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
十个优秀的Ajax/Javascript实例网站收集
Mar 31 Javascript
JS获取页面input控件中所有text控件并追加样式属性
Feb 25 Javascript
JavaScript汉诺塔问题解决方法
Apr 21 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
Jun 19 Javascript
AngularJS中的JSONP实例解析
Dec 01 Javascript
js实现京东轮播图效果
Jun 30 Javascript
基于vue-video-player自定义播放器的方法
Mar 21 Javascript
如何更好的编写js async函数
May 13 Javascript
Angular中sweetalert弹框的基本使用教程
Jul 22 Javascript
Vue-component全局注册实例
Sep 06 Javascript
vue使用openlayers实现移动点动画
Sep 24 Javascript
gojs实现蚂蚁线动画效果
Feb 18 Javascript
js弹出窗口返回值的简单实例
May 28 #Javascript
JS获取子窗口中返回的数据实现方法
May 28 #Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
May 27 #Javascript
Bootstrap3.0学习教程之JS折叠插件
May 27 #Javascript
全面解析多种Bootstrap图片轮播效果
May 27 #Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
May 27 #Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
May 27 #Javascript
You might like
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
php下关于中英数字混排的字符串分割问题
2010/04/06 PHP
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
php实现递归与无限分类的方法
2015/02/16 PHP
javascript prototype 原型链
2009/03/12 Javascript
清空上传控件input file的值
2010/07/03 Javascript
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
在jQuery1.5中使用deferred对象 着放大镜看Promise
2011/03/12 Javascript
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
jquery+json实现数据列表分页示例代码
2013/11/15 Javascript
js实现连个数字相加而不是拼接的方法
2014/02/23 Javascript
js实现跨域的方法实例详解
2015/06/24 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
简介Python中用于处理字符串的center()方法
2015/05/18 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
pytorch numpy list类型之间的相互转换实例
2019/08/18 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
2020/02/13 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
CSS3打造磨砂玻璃背景效果
2016/09/28 HTML / CSS
HTML5的革新 结构之美
2011/06/20 HTML / CSS
日本著名化妆品零售网站:Cosme Land
2019/03/01 全球购物
PHP如何设置和取得Cookie值
2015/06/30 面试题
C#面试题
2016/05/06 面试题
七年级数学教学反思
2014/01/22 职场文书
医院合作协议书
2014/08/19 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
eval(cmd)与eval($cmd)的区别与联系
2021/07/07 PHP