问题是,当我调用window.close()或self.close()时,它不会关闭窗口。现在似乎有一个信念,在Chrome中,你不能通过脚本关闭任何不是脚本创建的窗口。这显然是错误的,但无论如何,它仍然应该这样做,即使它需要弹出一个警告来确认。这些都没有发生。

所以有没有人有真正的,功能性的和经过验证的方法关闭一个窗口,使用javascript:window.close()或javascript:self.close(),这实际上是什么是预期的,发生的事情只是在每个浏览器,不是基于Chrome ?任何建议都将非常感谢,我正在寻找Javascript特定的解决方案,没有JQuery或第三方实现。

更新:虽然大部分建议都有严重的局限性和可用性问题,但最新的建议(具体到TamperMonkey)使用// @grant窗口。在脚本头文件中使用Close,即使是在那些通常不能处理Close方法的选项卡上也可以。虽然不完全理想,也不适用于所有情况,但在我的情况下,这是一个很好的解决方案。


当前回答

如果你不能关闭脚本没有打开的窗口,那么你可以使用下面的代码销毁你的页面:

 document.getElementsByTagName ('html') [0] .remove ();

其他回答

尽管你认为这是“明显的错误”,但你所说的“似乎是一种信念”实际上是正确的。窗口的Mozilla文档。近说

此方法只允许被脚本使用该窗口打开的窗口调用。开放的方法。如果该窗口不是由脚本打开的,则在JavaScript控制台中出现以下错误:脚本不能关闭未由脚本打开的窗口

你说它“应该仍然这样做”,但我不认为你会找到任何支持这一点的参考,也许你记错了什么?

这可能有点老了,但还是回答吧。

我使用top.close()关闭一个制表符。Window.close()或其他open…亲密对我没用。

只有当你使用window.open()打开一个新窗口时,新窗口才能像我上面提到的那样使用代码关闭。这对我来说是完美的:)注意:永远不要使用href在一个新选项卡中打开页面。Window.close()对"href"无效。请改用window.open()。

如果你不能关闭脚本没有打开的窗口,那么你可以使用下面的代码销毁你的页面:

 document.getElementsByTagName ('html') [0] .remove ();

试试这样做onclick="return self.close()"