处理showModalDialog在谷歌浏览器下获取不到返回值的方法

本文介绍了如何解决在谷歌浏览器中使用showModalDialog方法时无法获取返回值的问题,通过在父页面中判断浏览器类型并采用不同的赋值方式,实现了在谷歌、IE和火狐浏览器下的兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

showModalDialog的返回值在IE、火狐下面都能够获取返回值,但是在谷歌浏览器下面会返回Null,下面介绍解决方法

父页面:

 

 
function openwindows(){ 
var obj = new Object(); 

//打开模态子窗体,并获取返回值 
var retval = window.showModalDialog("ordervideo.jsp?rderIds="+"0010,0020,0030",obj,"dialogWidth=500px;dialogHeight=500px"); 

//for chrome 
if(retval == undefined) { 
retval = window.returnValue; 
} 
alert(retval); 
}  


 

子页面:

 

function onload(){ 

//for chrome 
if(window.opener != undefined) { //window.opener的值在谷歌浏览器下面不为空,在IE/火狐下面是未定义,由此判断是否是谷歌浏览器 
window.opener.returnValue = flag; //谷歌浏览器下给返回值赋值的方法window.opener.close(); //这里必须关闭一次,否则执行下面的window.close()无法关闭弹出窗口,因为谷歌浏览器下弹出窗口是个新的window  
}

else { 
window.returnValue=flag; //这种赋值方法兼容IE/火狐,但不支持谷歌浏览器 
} 
window.close(); 

}  


 

文章转载自:       showModalDialog在谷歌浏览器下获取不到返回值         http://www.studyofnet.com/news/230.html

 

参考资源链接:[解决谷歌浏览器showModalDialog对话框兼容问题的实用方案](https://wenku.youkuaiyun.com/doc/6412b6babe7fbd1778d47c41?utm_source=wenku_answer2doc_content) 在谷歌浏览器处理showModalDialog的兼容性问题,需要了解其不支持该方法的原因,并掌握替代方案的实现。谷歌浏览器出于安全性和隐私策略的考虑,对`showModalDialog`进行了限制,以避免滥用弹出窗口。因此,我们需要检测用户代理字符串来判断是否为Chrome浏览器,并为Chrome提供替代方案。 具体的操作步骤如下: 1. 使用JavaScript编写一个检测Chrome浏览器的函数,这个函数会通过检查`navigator.userAgent`来确定当前浏览器是否为Chrome。如果检测结果为Chrome,那么将使用`window.open()`方法来模拟模态对话框的效果。 2. 在使用`window.open()`时,需要设置一些特定的参数来模拟模态窗口的行为。这些参数包括窗口大小、位置以及禁用工具栏、滚动条和窗口大小调整等,以达到模态对话框的效果。 3. 如果浏览器不是Chrome,则可以正常使用`showModalDialog`方法。 示例代码如下: ```javascript function showModalDialog(url, args, width, height) { var tempReturnValue; // 检测是否为Chrome浏览器 if (navigator.userAgent.indexOf( 参考资源链接:[解决谷歌浏览器showModalDialog对话框兼容问题的实用方案](https://wenku.youkuaiyun.com/doc/6412b6babe7fbd1778d47c41?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值