JS模态窗口返回值兼容问题解决方案
2013-10-22 19:50
381 查看
因系统要兼容原IE已使用的关闭方法,经调试测得,需对window.dialogArguments进行再较验,不然易出问题。
返回值接收的,只需在原有IE的接收模式下,多较验一下opener就可以了,如下:
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();
博客园davidyang78原创,转载请保留此信息
原理探讨:
chrome下,标准方法,在弹出页面不回发的情况下,是可以返回值的。 有回发则不能正常返回值。此方法可以解决。
IE下标准方法,有时不明原因不能正确返回值,此方法可解决。
FF未详细测试,应该问题不大。
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();
博客园davidyang78原创,转载请保留此信息
原理探讨:
chrome下,标准方法,在弹出页面不回发的情况下,是可以返回值的。 有回发则不能正常返回值。此方法可以解决。
IE下标准方法,有时不明原因不能正确返回值,此方法可解决。
FF未详细测试,应该问题不大。
相关文章推荐
- JS模态窗口返回值兼容问题解决方案
- JS模态窗口返回值兼容问题解决方案
- JS模态窗口返回值兼容问题解决方案
- JS模态窗口返回值兼容问题解决方案
- JS模态窗口返回值兼容问题解决办法
- JS模态窗口返回值兼容问题的完美解决方法
- prototype.js的Ajax对IE8兼容问题解决方案
- js通过window.external调用delphi的返回值类型问题解决方案,不解的COM问题
- 移动端模态窗口的滚动和橡皮筋问题解决方案
- JS两种方案解决跨域问题
- 笔记-------模态窗口提交的时候会打开新窗口问题的解决方法
- AngularJs & JQuery 结合使用存在的问题 之 input hidden 问题解决方案
- window.showdialog完全手册,解决模态窗口,传值和返回值问题
- js 判断Object 是否为空问题解决方案
- jquery 和其他js框架同时使用的不兼容问题解决方法
- springMVC框架在js中使用window.location.href请求url时IE不兼容问题解决
- IE浏览器各版本与web标准不兼容问题解决方案
- Android版本兼容问题以及云之讯第三方兼容问题解决方案
- Ubuntu 12.04 升级至13.04 时显卡不兼容问题解决方案
- tabbarcontroller 内嵌导航 控制器,2层push hide tabbar 后 ,第二层直接返回根视图控制器选择tabbarcontroller的其它vc 无法显示 tabbar的 问题解决方案