我这里有这段代码:
<?php
error_reporting(0);
if(isset($_GET['bd'])){
?>
<script>
window.close();
</script>
<?php
}
这在Chrome中工作正常,但在FireFox中不起作用。这是否存在已知问题?如何让它在提到的浏览器中一致地工作?
在大多数浏览器中,只有当有问题的window
具有opener
时,window.close()
才会起作用。opener
,我的意思是你有一个打开child
window
的parent
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中所说的那样。