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 相关文章推荐
Jquery插件写法笔记整理
Sep 06 Javascript
jquery绑定事件不生效的解决方法
Feb 11 Javascript
jQuery层级选择器用法分析
Feb 10 Javascript
jquery使用remove()方法删除指定class子元素
Mar 26 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
Aug 01 Javascript
javascript中BOM基础知识总结
Feb 14 Javascript
JavaScript运动框架 链式运动到完美运动(五)
May 18 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
Jan 24 Javascript
jQuery中each和js中forEach的区别分析
Feb 27 jQuery
利用Angular7开发一个Radio组件的全过程
Jul 11 Javascript
小程序实现按下录音松开识别语音
Nov 22 Javascript
如何基于js判断浏览器版本
Feb 20 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
千呼万唤始出来,DOTA2勇士令状不朽宝藏Ⅱ现已推出
2020/08/25 DOTA
简单的php中文转拼音的实现代码
2014/02/11 PHP
destoon安装出现Internal Server Error的解决方法
2014/06/21 PHP
php获取textarea的值并处理回车换行的方法
2014/10/20 PHP
php curl 获取https请求的2种方法
2015/04/27 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
PHP常用字符串函数用法实例总结
2020/06/04 PHP
javascript中字符串拼接需注意的问题
2010/07/13 Javascript
nodejs初始化init的示例代码
2018/10/10 NodeJs
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
在Layui中实现开关按钮的效果实例
2019/09/29 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
2019/08/24 Python
基于matplotlib xticks用法详解
2020/04/16 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
html5音频_动力节点Java学院整理
2018/08/22 HTML / CSS
解决html5中的video标签ios系统中无法播放使用的问题
2020/08/10 HTML / CSS
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
小学教师的自我评价范例
2013/10/31 职场文书
干部职工纪律作风整改措施思想汇报
2014/10/11 职场文书
构建和谐校园倡议书
2015/01/19 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书
Python常遇到的错误和异常
2021/11/02 Python
MySQL中CURRENT_TIMESTAMP的使用方式
2021/11/27 MySQL
MySQL插入数据与查询数据
2022/03/25 MySQL