window.close 和 chrome 的问题

IT技术 javascript google-chrome chrome-ios
2021-03-10 23:25:51

我正在尝试使用 JavaScript 关闭子窗口,在 Firefox 中一切正常,但在 Chrome 中窗口没有关闭。

这是我正在使用的

$(document).ready(function() {
    if (window.opener && !window.opener.closed)
        window.opener.location = "http://www.website.com"
    window.close();
});

我在google上尝试了一个建议,但无济于事。

任何有类似问题或知道解决方法的人?

6个回答

我知道这个问题很老,但我遇到了同样的问题。这对我有用:

window.open('', '_self', ''); //bug fix
window.close();
该解决方案的未来性如何?有谁知道这为什么有效?我认为一般规则是你不能关闭一个不是用 JavaScript 打开的窗口。
2021-05-02 23:25:51
@Long 我认为是因为错误修复在第一个 window.open() 时崩溃了,所以应该延迟。@Warren 谢谢。
2021-05-07 23:25:51
是的,这也适用于我。@Patrick 应该将其标记为答案。
2021-05-09 23:25:51
我不能让它工作;我已经使用 LyteBox 打开了子窗口,并且可以使用 parent.document“回发”到主窗口,但是它只是忽略了 window.close - 这很奇怪,因为子窗口是在第一名。
2021-05-15 23:25:51
@WalterStabosz 如果您直接使用 window.close() 那么它将不起作用,因为只允许关闭从 javascript 打开的选项卡。所以我们在同一个窗口中打开一些空白 url,然后尝试通过 javascript 关闭它,它可以工作!!
2021-05-20 23:25:51

如果以前您通过以下方式打开其他窗口 window.open()

这不起作用:

window.open(...)
window.open('', '_self', '');
window.close();

但是工作:

window.open(...);
setTimeout(function(){
    window.open('', '_self', '');
    window.close();
}, 100);

像这样的事情也应该有效:

setTimeout(function() {
    window.close();
},50);
对我不起作用 - 它没有错误,它什么也不做。
2021-05-05 23:25:51

我认为它在 Chrome Kiosk(全屏)模式下工作。尝试成功。

top.window.close() 对我有用。在 IE、FF、Chrome、Safari 和 Opera 上测试。