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 相关文章推荐
javascript中使用replaceAll()函数实现字符替换的方法
Dec 25 Javascript
jQuery EasyUI API 中文文档 - EasyLoader 加载器
Sep 29 Javascript
原生javascript和jquery判断浏览器版本等信息
Jul 04 Javascript
AngularJS入门教程之过滤器详解
Aug 19 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
Aug 26 Javascript
js实现动态显示时间效果
Mar 06 Javascript
JavaScript中双符号的运算详解
Mar 12 Javascript
node.js博客项目开发手记
Mar 16 Javascript
vue+webpack中配置ESLint
Nov 07 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
Mar 06 Javascript
react基本安装与测试示例
Apr 27 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
Oct 31 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
使用php验证复选框有效性的示例
2013/11/13 PHP
php多维数组去掉重复值示例分享
2014/03/02 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
2018/10/10 PHP
javascript preload&lazy load
2010/05/13 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
JS烟花背景效果实现方法
2015/03/03 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
2015/09/05 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
2018/12/05 Javascript
vuex实现数据状态持久化
2019/11/11 Javascript
vue移动端写的拖拽功能示例代码
2020/09/09 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
python通过函数属性实现全局变量的方法
2015/05/16 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
Python实战小程序利用matplotlib模块画图代码分享
2017/12/09 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
Python列表解析配合if else的方法
2018/06/23 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
python函数不定长参数使用方法解析
2019/12/14 Python
python的sys.path模块路径添加方式
2020/03/09 Python
Python读写csv文件流程及异常解决
2020/10/20 Python
linux系统下pip升级报错的解决方法
2021/01/31 Python
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
Dyson戴森波兰官网:Dyson.pl
2019/08/05 全球购物
受欢迎的大学生自我评价
2013/12/05 职场文书
热爱祖国演讲稿
2014/05/04 职场文书
对外汉语专业大学生职业生涯规划范文
2014/09/13 职场文书
导游词之无锡东林书院
2019/12/11 职场文书
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
2021/04/01 PHP
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL
动画「半妖的夜叉姬」新BD特典图公开
2022/03/22 日漫
Flink 侧流输出源码示例解析
2022/09/23 Servers