我这里有这个代码:
<?php
error_reporting(0);
if(isset($_GET['bd'])){
?>
<script>
window.close();
</script>
<?php
}
哪个在Chrome中运行正常,但在FireFox中无效。 这是否存在已知问题? 如何让它在所提到的浏览器中保持一致?
答案 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中所做的那样。