本文介绍如何在JavaScript中调用window.close()关闭窗口时避免弹出确认对话框。针对IE浏览器,通过在close前设置window.top.opener=null来消除提示;针对Firefox,需在about:config中启用dom.allow_scripts_to_close_windows。此外提供了通过打开新窗口再关闭的替代方案,确保跨浏览器兼容。
IE浏览器去除关闭确认框的方法
通常使用window.close()函数即可实现窗口关闭功能,该函数在IE和Firefox浏览器中均被支持。
出于安全考虑,当在IE中使用close方法关闭非通过脚本open打开的窗口时,浏览器会弹出一个确认对话框询问用户。为了去除这个提示框,可以参考以下代码实现。
function winClose(){ window.top.opener = null; window.close(); }
只需在调用window.close()之前,先执行window.top.opener = null;即可消除IE的确认弹窗。
Firefox浏览器关闭网页的配置与替代方案
有观点认为Firefox不支持close方法,这并不准确。Firefox无法直接关闭用户手动打开的网页是默认行为,但可以通过修改配置来解决。
在Firefox地址栏输入about:config进入高级设置,搜索并找到dom.allow_scripts_to_close_windows选项,将其值修改为true。值得注意的是,在Firefox中即使不修改配置也不会弹出确认对话框。
<script>
function a(){
window.open('','_parent','');
window.opener = window;
window.close();
}
</script>
完成上述设置后,再次运行代码即可在Firefox环境下成功关闭窗口。
如果要求用户手动进行设置,则相当于该功能未生效,体验不佳。因此,寻找无需用户干预的替代方案显得尤为重要。
补充说明:可以通过打开一个新窗口,然后立即关闭该新窗口的方式来实现关闭当前页面的效果。感谢strangebank提供的思路。有趣的是,之前使用Firefox 2测试时未能成功,但使用Firefox 3时测试通过。后来在同事的电脑上使用Firefox 2再次测试,也成功实现了功能。能尽早解决问题总是好的。
index.html
<a href="c.html" target="_blank">ddddddddd</a>
c.html
<a href="javascript:window.open('','_parent','');window.close();">Close Window</a>