js弹出子窗口的浏览器兼容性问题

业务功能是,点击“修改”按钮弹出编辑子窗口,修改完成后点击保存,触发父窗口的“搜索”按钮加载新的修改后的内容显示。
检测的浏览器有“IE”,"FireFox","Chrome"。
  1. Window.open方法

    兼容性最好的是window.open()弹出框方法,三个浏览器都支持,并且三个浏览器都支持window.opener对象。通过window.opener方法得到父窗口,就可以容易的调用父窗口的任何方法,如:window.opener.parentMethod();

  2. Window.showModalDialog方法

    window.open的缺点是传参能力太差,只支持字符串类型的参数传递,而showModalDialog的优点是,可以很方便的传递参数到子窗口(支持对象参数)。在项目中将form元素封装成对象属性:

var data = $datatable.dataTable().fnGetData(tr);
//把父窗口的刷新按钮也封装进参数对象
data.button = document.getElementById("ds-list-btn-query");
//把参数对象传递到父窗口
window.showModalDialog("relDataSourceSet.jsp?flag=update",data,"dialogLeft:100px;dialogWidth:800px;dialogHeight:880px");
在子窗口中可以通过:
var params = window.dialogArguments;//只支持showModalDialog方法,不支持open方法
var buttonObj = params.button;
alert("修改成功!");
$(buttonObj).trigger("click"); //刷新作用

调用父窗口的“刷新”按钮。
但是showModalDialog方法的问题是兼容性(IE、FireFox支持,chrome不支持showModalDialog)。

后记:

两个方法的比较是基于不考虑“模态窗口”、“非模态窗口”的需求。
用showModalDialog打开的子窗口中,FireFox支持通过window.opener获取到父窗口,IE却不支持。可以凭此断言FireFox是三者中兼容性支持最好的浏览器吗?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值