window.close()不起作用 - 脚本可能只关闭由它打开的窗口

时间:2014-09-19 15:17:36

标签: javascript window keyboard-shortcuts shortcut

当我尝试通过Javascript的window.close()方法关闭窗口时,我总是遇到问题,而浏览器在控制台上显示以下消息:

"Scripts may close only the windows that were opened by it."

这发生在页面的每个部分。我可以直接使用链接,按钮或脚本运行此命令,但始终会显示此消息。

我试图替换下面的函数(或其变体)的window.close();方法,但没有再发生任何事情:

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

6 个答案:

答案 0 :(得分:9)

错误消息不会比这更清楚:

"Scripts may close only the windows that were opened by it."

如果您的脚本没有启动打开窗口(使用window.open之类的东西),则不允许该窗口中的脚本关闭它。它可以防止网站控制您的浏览器并关闭窗口。

答案 1 :(得分:4)

我通过Google搜索了很多网页,并在Stack Overflow上搜索,但没有任何建议解决了我的问题。

经过多次尝试和"踢",我改变了测试控制器的方式。然后我发现问题一直发生在我重新打开Chrome浏览器中Ctrl + Shift + T快捷方式的页面。所以页面运行了,但没有父窗口引用,因为这不能被关闭。

答案 2 :(得分:3)

您无法关闭当前窗口或使用“_self”打开的任何窗口或页面 但你可以这样做

var customWindow = window.open('', '_blank', '');
    customWindow.close();

答案 3 :(得分:0)

以下代码对我有用:)

window.open('your current page URL', '_self', '');
window.close();

这不起作用。有些网站工作正常。但对于youtube.com和yahoo.com网站等,上述应用程序代码无效。请提出任何想法。

答案 4 :(得分:0)

windows 对象有一个 windows 字段,它被克隆并存储打开窗口的日期,应该在这个字段上调用 ​​close:

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

答案 5 :(得分:-1)

凌乱但对我有用。

window.close();
setTimeout(() => {window.close();}, 2000);
setTimeout(() => {window.close();}, 4000);