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入门教程(11) js事件处理
Jan 31 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
Feb 11 Javascript
jQuery.holdReady()使用方法
May 20 Javascript
JavaScript转换二进制编码为ASCII码的方法
Apr 16 Javascript
javascript弹出带文字信息的提示框效果
Jul 19 Javascript
vue iview组件表格 render函数的使用方法详解
Mar 15 Javascript
利用jquery和BootStrap实现动态滚动条效果
Dec 03 jQuery
javascript数据类型中的一些小知识点(推荐)
Apr 18 Javascript
JS实现简单日历特效
Jan 03 Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
Mar 08 Javascript
使用JavaScript实现贪吃蛇游戏
Sep 29 Javascript
vue实现滑动解锁功能
Mar 03 Vue.js
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
ThinkPHP提交表单时默认自动转义的解决方法
2014/11/25 PHP
PHP使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
使用jQuery中的wrap()函数操作HTML元素的教程
2016/05/24 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
2016/09/04 Javascript
bootstrap table 数据表格行内修改的实现代码
2017/02/13 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
基于JS递归函数细化认识及实用实例(推荐)
2017/08/07 Javascript
Angular2整合其他插件的方法
2018/01/20 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
2019/02/01 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
2018/10/11 Python
Python3.5装饰器原理及应用实例详解
2019/04/30 Python
使用python实现对元素的长截图功能
2019/11/14 Python
在OpenCV里实现条码区域识别的方法示例
2019/12/04 Python
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
在线课程:Skillshare
2019/04/02 全球购物
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
Prototype如何更新局部页面
2013/03/03 面试题
大学生入党自我鉴定
2013/10/31 职场文书
电大毕业个人生自我鉴定
2014/03/26 职场文书
活动总结怎么写啊
2014/05/07 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
信用卡工资证明范本
2015/06/19 职场文书
2016年企业先进员工事迹材料
2016/02/25 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android