js模式化窗口问题![window.dialogArguments]


Posted in Javascript onOctober 30, 2016

前些天做项目时遇到了个浏览器兼容问题,解决后记录一下,也将模式化的资料放上!

详细问题描述:

在火狐浏览器中弹出一个子窗口,子页面中是一个分页,点下一页后子页面会刷新,然后window.dialogArguments对象就丢失了,alert输出显示undefined [解决方法见第三项]

最近做网站的时候需要用到模式化窗口功能,也遇到了一些问题,所以查了查资料以解决

1.弹出窗口几种方法:

a.window.open(pageURL,name,parameters);
b.window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框(IE 4+支持)
c.window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框(IE 5+支持)

2.显示样式问题:所用到的是window.showModalDialog(),此方法弹出的窗口在IE6下显示比IE7 ,IE8 下高度要小点,所以你可以写个js 解决这点(IE6下高度需要+35PX左右, dialogLeft 属性可以根据屏幕宽度设置)
代码片段如下:

var swidth=window.screen.width;
 if(parseInt(width)>swidth)
 swidth=100;
 else
 swidth=(swidth-parseInt(width))/2;
varwindowStatus="dialogWidth:"+width+"px;dialogHeight:"+height+"px;dialogTop:80px;dialogLeft:"+swidth+"px;center:1;status:no;scroll:no;resizable:no;help:no;";
 
//弹出方法
 if(url.indexOf("?")<0){window.showModalDialog(url+'?setTime='+newDate().getTime(),obj,windowStatus);}
 else{window.showModalDialog(url+'&setTime='+newDate().getTime(),obj,windowStatus);}

3.dialogArguments对象FF浏览器中丢失问题: 弹出showModalDialog窗口中需要分页显示数据,点击页面中的信息,获取分页数据的ID,传给弹出的父窗口。在IE下运行很正常,但在FireFox 3.0中运行时,如果页面不跳转则可以正常的调用window.dialogArguments,若页面一跳转则会丢失window.dialogArguments的引用

现给出2种解决方法:

a.将showModalDialog窗口的页面放在frameset或者iframe里面,进行一次包装。
例:
window.showModalDialog("test.aspx");

test.aspx 页面内容

<frameset cols="0,*">
<frame src=""/>
<frame src="分页显示数据的页面"/>
</frameset>

页面返回方法变成

function returnValue(flag)
{
 var myObj = window.parent.dialogArguments;
 myObj.value = flag;
 window.parent.close();
}

这样就可以拿到返回的值了

b. 如果不想多弄出来个页面,可以用下面的方法,此方法可以用到了window.opener.document 对象,此对象IE7,IE8貌似都不支持(本人测试过,不知道在你机器上咋样),判断下是什么浏览器,然后给父页面的隐藏域赋值,然后父页面再处理;

代码如下:

function returnValue(flag)
 {
 document.getElementById("rValue").value=flag;
 if (window.ActiveXObject) //IE浏览器 
 {
 var myObj = window.dialogArguments;
 //alert(myObj);
 myObj.value = flag;
 window.close();
 }
 else{
 window.opener.document.getElementById("hid_oilid").value=flag;
 window.opener.document.getElementById("txt_oil").value=flag+"号";
 //self.close();
 window.close();
 } 
 }

基本所遇到问题均已经解决,关于父页面与子页面传值可以多参阅其他资料

Javascript 相关文章推荐
JavaScript中变量声明有var和没var的区别示例介绍
Sep 15 Javascript
js游戏人物上下左右跑步效果代码分享
Aug 28 Javascript
JS函数的几种定义方式分析
Dec 17 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
Feb 18 Javascript
js判断价格,必须为数字且不能为负数的实现方法
Oct 07 Javascript
JS调用Android、Ios原生控件
Jan 06 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
Jan 13 Javascript
详解webpack打包vue时提取css
May 26 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
Dec 22 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
Dec 24 Javascript
Postman无法正常返回结果问题解决
Aug 28 Javascript
JavaScript 实现下雪特效的示例代码
Sep 09 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
Oct 30 #Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
Oct 29 #Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
Oct 29 #Javascript
JS给Array添加是否包含字符串的简单方法
Oct 29 #Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
Oct 29 #Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
Oct 28 #Javascript
RequireJS简易绘图程序开发
Oct 28 #Javascript
You might like
PHP学习之PHP表达式
2006/10/09 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
2013/05/10 PHP
web server使用php生成web页面的三种方法总结
2013/10/28 PHP
php自定义加密与解密程序实例
2014/12/31 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
php生成图片验证码的实例讲解
2015/08/03 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
jQuery 遍历函数详解
2015/07/05 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
简单实现js悬浮导航效果
2017/02/05 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
react-native动态切换tab组件的方法
2018/07/07 Javascript
vuejs router history 配置到iis的方法
2018/09/20 Javascript
js中的reduce()函数讲解
2019/01/18 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
Vue动态生成表格的行和列
2019/07/18 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
python去除字符串中的换行符
2017/10/11 Python
python爬虫项目设置一个中断重连的程序的实现
2019/07/26 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
Python中使用gflags实例及原理解析
2019/12/13 Python
浅谈Python中threading join和setDaemon用法及区别说明
2020/05/02 Python
Python 带星号(* 或 **)的函数参数详解
2021/02/23 Python
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
乔丹名人堂演讲稿
2014/05/24 职场文书
小学一年级学生评语大全
2014/12/25 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
婚庆主持词大全
2015/06/30 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书