JavaScript跨浏览器窗口关闭问题

时间:2012-05-21 15:04:16

标签: php javascript jquery cross-browser

我这里有这个代码:

<?php
    error_reporting(0);
    if(isset($_GET['bd'])){
?>

<script>
    window.close();
</script>


<?php

}

哪个在Chrome中运行正常,但在FireFox中无效。 这是否存在已知问题? 如何让它在所提到的浏览器中保持一致?

2 个答案:

答案 0 :(得分:8)

在大多数浏览器中,window.close()仅在问题window具有opener时才有效。 opener,我的意思是您有一个parent window,可以打开child window。只有child window才能被window.close()关闭。

答案 1 :(得分:4)

对于Firefox,权威参考是MDN。引自那里:

只允许对使用window.open方法由脚本打开的窗口调用此方法。如果脚本未打开窗口,则JavaScript控制台中将显示以下错误:脚本可能无法关闭脚本未打开的窗口。

来源:https://developer.mozilla.org/en/DOM/window.close

由于您的网页是在服务器端构建并定期打开的,而不是通过javascript打开,因此在您的情况下无效。

还要注意Internet Explorer中的不同行为:

在未使用脚本打开的窗口上调用window.close方法会显示一个确认对话框。使用脚本关闭最后运行的Windows Internet Explorer实例也会打开确认对话框。

所以这会有效,但需要确认。

最后,我在Opera上进行了测试,它甚至可以在常规打开的窗口上运行,就像你在Chrome中所做的那样。