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 工具库 Cloudgamer JavaScript Library v0.1 发布
Oct 29 Javascript
解析瀑布流布局:JS+绝对定位的实现
May 08 Javascript
jquery.mobile 共同布局遇到的问题小结
Feb 10 Javascript
javascript制作的滑动图片菜单
May 15 Javascript
js性能优化技巧
Nov 29 Javascript
JavaScript 七大技巧(一)
Dec 13 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
Dec 25 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
Jan 28 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
Jun 07 Javascript
Jq通过td获取同行其它列td的方法
Oct 05 Javascript
AngularJS实现单一页面内设置跳转路由的方法
Jun 28 Javascript
vue实现文件上传功能
Aug 13 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生成图片验证码的方法
2016/04/15 PHP
PHP curl批处理及多请求并发实现方法分析
2018/08/15 PHP
PHP autoload使用方法及步骤详解
2020/09/05 PHP
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
javascript中apply和call方法的作用及区别说明
2014/02/14 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
PHP+mysql+Highcharts生成饼状图
2015/05/04 Javascript
js兼容火狐显示上传图片预览效果的方法
2015/05/21 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
微信小程序模板(template)使用详解
2018/01/31 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
Python压缩和解压缩zip文件
2015/02/14 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
python面试题之列表声明实例分析
2019/07/08 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
tensorflow2.0的函数签名与图结构(推荐)
2020/04/28 Python
python元组拆包实现方法
2021/02/28 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
GafasWorld西班牙:购买太阳镜、眼镜和隐形眼镜
2019/09/08 全球购物
Why do we need Unit test
2013/01/03 面试题
博士学位自我鉴定范文
2013/12/26 职场文书
师范毕业生自我鉴定
2014/01/15 职场文书
设备动力科岗位职责范本
2014/02/23 职场文书
支行行长竞聘演讲稿
2014/05/15 职场文书
入职担保书范文
2014/05/21 职场文书
战略合作意向书
2014/07/29 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
2016庆祝国庆67周年宣传语
2015/11/25 职场文书
简述python四种分词工具,盘点哪个更好用?
2021/04/13 Python
Golang数据类型和相互转换
2022/04/12 Golang
排查Tomcat进程假死的问题
2022/05/06 Servers