这工作的要求:
你必须从窗口启动器打开窗口/标签,以获得一个javascript句柄,以使其工作,因为它并不总是工作在一个标签,没有通过窗口启动器脚本打开。这个测试页面向您展示了如何:
http://browserstrangeness.bitbucket.io/window_close_tester.htm
如果你没有看到它工作在我的启动器,张贴你的浏览器,你的设备和版本是必要的。不同版本的浏览器在不同设备上的表现不同。(比如ipad上的火狐浏览器和Chrome浏览器,并不是他们所说的那样。他们是不同皮肤的Safari !)
因此,重要的是说,例如“我在iPad上使用Safari 10.14,使用iOs 14.5”,这样我(或其他一些有用的人在stackoverflow这里)可以为你研究它,并发布结果以帮助其他用户。提前谢谢你这么做。如果您使用启动器,并且它在我的示例中为您工作,那么它就工作了。
我正在使用Brock Adams发布的方法,它甚至可以在Firefox中工作,如果它是由用户通过按钮或链接从另一个窗口启动。
open(location, '_self').close();
我从一个按钮按下调用它,所以它是用户发起的,它仍然可以使用Chrome 90, Internet Explorer 11, Edge, Safari 7-10和Firefox 35和88。我使用8.1和10版本的Windows和Mac OS X 10.6、10.9、10.10和10.14进行测试。
自关闭窗口代码(在自动关闭的页面上)
完整的代码将用于用户打开的窗口,可以关闭自己:
window_to_close.htm
JavaScript:
function quitBox(cmd)
{
if (cmd=='quit')
{
open(location, '_self').close();
}
return false;
}
HTML:
<input type="button" name="Quit" id="Quit" value="Quit" onclick="return quitBox('quit');" />
下面是带有工作示例的测试页面:(现在在Chrome 90.0和Firefox 88.0中进行了测试——包括Windows 10和Mac 10.14 Mojave)
http://browserstrangeness.bitbucket.io/window_close_tester.htm
窗口打开器代码(在打开上述页面的页面上)
要做到这一点,安全性强加的跨浏览器兼容性要求要关闭的窗口必须已经被用户单击同一站点域中的按钮打开。
例如,使用上述方法关闭自身的窗口,可以使用以下代码从页面打开(代码提供自上面链接的示例页面):
window_close_tester.htm
JavaScript:
function open_a_window()
{
window.open("window_to_close.htm");
return false;
}
HTML:
<input type="button" onclick="return open_a_window();" value="Open New Window/Tab" />