JavaScript跨浏览器窗口关闭问题


JavaScript cross browser window close issue

我这里有这段代码:

<?php
    error_reporting(0);
    if(isset($_GET['bd'])){
?>
<script>
    window.close();
</script>

<?php
}

这在Chrome中工作正常,但在FireFox中不起作用。这是否存在已知问题?如何让它在提到的浏览器中一致地工作?

在大多数浏览器中,只有当有问题的window具有opener时,window.close()才会起作用。opener,我的意思是你有一个打开child windowparent window。只有child window可以由window.close()关闭。

对于 Firefox,权威参考是 MDN。那里的一句话:

仅允许对使用 window.open 方法的脚本打开的窗口调用此方法。如果窗口不是由脚本打开的,则 JavaScript 控制台中会出现以下错误:脚本可能不会关闭未由脚本打开的窗口。

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

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

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

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

所以这将起作用,但需要确认。

最后,我在Opera上测试了它,它甚至可以在经常打开的窗口中工作,就像你在Chrome中所说的那样。