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 相关文章推荐
一些常用的JS功能函数(2009-06-04更新)
Jun 04 Javascript
用Javascript 获取页面元素的位置的代码
Sep 25 Javascript
Js 弹出框口并返回值的两种常用方法
Dec 30 Javascript
javascript 获取网页标题代码实例
Jan 22 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
Nov 23 Javascript
JavaScript实现简单的日历效果
Sep 25 Javascript
bootstrap modal+gridview实现弹出框效果
Aug 15 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
Dec 07 Javascript
分享一个vue项目“脚手架”项目的实现步骤
May 26 Javascript
js实现简单分页导航栏效果
Jun 28 Javascript
VUE实时监听元素距离顶部高度的操作
Jul 29 Javascript
Vue elementui字体图标显示问题解决方案
Aug 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
phpize的深入理解
2013/06/03 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
2014/06/22 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
jquery cookie插件代码类
2009/05/26 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
2016/01/23 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
jQuery UI制作选项卡(tabs)
2016/12/13 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
p5.js 毕达哥拉斯树的实现代码
2018/03/23 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
小程序hover-class点击态效果实现
2019/02/26 Javascript
vue-router的钩子函数用法实例分析
2019/10/26 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
使用Vue Composition API写出清晰、可扩展的表单实现
2020/06/10 Javascript
vue实现购物车列表
2020/06/30 Javascript
JS模拟实现京东快递单号查询
2020/11/30 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
python 中的divmod数字处理函数浅析
2017/10/17 Python
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
python多线程并发及测试框架案例
2019/10/15 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
Python类继承和多态原理解析
2020/02/05 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
2021/01/07 Python
民族团结演讲稿范文
2014/08/27 职场文书
交通肇事罪辩护词
2015/05/21 职场文书
Linux中Nginx的防盗链和优化的实现代码
2021/06/20 Servers
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL