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 相关文章推荐
document.all还是document.getElementsByName?
Jul 21 Javascript
用javascript编写的第一人称射击游戏
Feb 25 Javascript
js+FSO遍历文件夹下文件并显示
Mar 07 Javascript
javascript fullscreen全屏实现代码
Apr 09 Javascript
Extjs学习笔记之二 初识Extjs之Form
Jan 07 Javascript
jquery+json实现数据列表分页示例代码
Nov 15 Javascript
Backbone View 之间通信的三种方式
Aug 09 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
Mar 19 Javascript
详解Node.js中的Async和Await函数
Feb 22 Javascript
浅谈Vue.js路由管理器 Vue Router
Aug 16 Javascript
使用uni-app开发微信小程序的实现
Dec 13 Javascript
原生js中运算符及流程控制示例详解
Jan 05 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学习 变量使用总结
2011/03/24 PHP
用来解析.htgroup文件的PHP类
2012/09/05 PHP
linux系统下php安装mbstring扩展的二种方法
2014/01/20 PHP
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
js 验证身份证信息有效性
2014/03/28 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
2015/10/14 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
NodeJS 中Stream 的基本使用
2018/07/30 NodeJs
使用vue-router为每个路由配置各自的title
2018/07/30 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
小程序click-scroll组件设计
2019/06/18 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
python装饰器decorator介绍
2014/11/21 Python
Python读取文件内容的三种常用方式及效率比较
2017/10/07 Python
python使用turtle库绘制树
2018/06/25 Python
selenium+python自动化测试环境搭建步骤
2019/06/03 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
python3模拟实现xshell远程执行liunx命令的方法
2019/07/12 Python
关于Tensorflow使用CPU报错的解决方式
2020/02/05 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
一年级小学生评语
2014/04/22 职场文书
我的未来不是梦演讲稿
2014/09/02 职场文书
科学发展观演讲稿
2014/09/11 职场文书
校本研修个人总结
2015/02/28 职场文书
Python编解码问题及文本文件处理方法详解
2021/06/20 Python
电脑开机弹出documents文件夹怎么回事?弹出documents文件夹解决方法
2022/04/08 数码科技
MySQL 条件查询的常用操作
2022/04/28 MySQL