【问题标题】:JavaScript cross browser window close issueJavaScript 跨浏览器窗口关闭问题
【发布时间】:2012-05-28 02:29:43
【问题描述】:

我这里有这段代码:

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

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


<?php

}

在 Chrome 中可以正常工作,但在 FireFox 中无法正常工作。 这有一个已知问题吗? 我怎样才能让它在上述浏览器中始终如一地工作?

【问题讨论】:

  • 您是否在 Javascript 控制台中看到错误?
  • 试试&lt;script type="text/javascript"&gt;window.close(); &lt;/script&gt;
  • @mgraph 浏览器很久以前就想到了 &lt;script&gt; 中的 JavaScript。其实用text/javascriptapplication/javascript还是别的什么都解决了……
  • 你关闭的窗口是弹窗还是其他方式创建的子元素?
  • 那你不能关闭那个窗口!

标签: php javascript jquery cross-browser


【解决方案1】:

在大多数浏览器中,window.close() 仅在所讨论的window 具有opener 时才有效。 通过opener,我的意思是你有一个parentwindow,它打开一个childwindow。只有child window 可以被window.close() 关闭。

【讨论】:

  • 不,php条件与此无关。这取决于窗口的起始点。如果窗口是子窗口,我可以预见 php 条件的问题。
【解决方案2】:

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

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

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

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

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

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

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

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

【讨论】:

  • @user1244193 拜托,你有没有看我的回答?根据 MDN(基本上是 Firefox 的文档),反应应该是“脚本可能不会关闭不是由脚本打开的窗口。”。这正是我的 Firefox 所说的。看看工具->错误控制台(Ctrl+shift+J)。
  • 时间戳:30/06/33 06:25:43 م 警告:_moz_generated_content_after 元素的 XUL 框包含一个内联的 #text 子元素,强制其所有子元素被包装在一个块中。源文件:chrome://browser/content/browser.xul 行:0 我明白这是什么意思
  • 嗯,只是为了让它完整 - 我忘了添加 MSDN 参考的源代码:msdn.microsoft.com/en-us/library/ie/ms536367(v=vs.85).aspx
  • @user1244193 这看起来像是一个 CSS 错误。您正在寻找 JavaScript 错误...
  • 好的,如果我将其更改为弹出窗口,它是选项卡窗口,可以进行更改
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 2014-10-14
  • 1970-01-01
  • 2010-10-22
  • 2021-05-22
  • 2011-11-19
相关资源
最近更新 更多