【问题标题】:window.close() doesn't work - Scripts may close only the windows that were opened by itwindow.close() 不起作用 - 脚本可能只关闭它打开的窗口
【发布时间】:2014-11-14 05:49:49
【问题描述】:

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

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

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

我尝试将window.close(); 方法替换为下面的函数(或这些函数的变体),但没有再次发生:

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

【问题讨论】:

  • 你不能关闭不是用window.open()打开的窗口。你在底部的那个 window.open hack 曾经可以工作,但是那个安全漏洞被 chrome 修补了。

标签: javascript window keyboard-shortcuts shortcut


【解决方案1】:

错误信息再清楚不过了:

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

如果您的脚本没有开始打开窗口(使用 window.open 之类的东西),则该窗口中的脚本不允许关闭它。它是一种防止网站控制您的浏览器并关闭窗口的安全措施。

【讨论】:

  • 它也可以防止窗户自行关闭,这并不似乎是一个非常有用的安全措施,我比较确定这就是 99% 的人找到这个。
  • @donatJ — 它很有用,因为它可以阻止网站破坏您正在使用的窗口以及可以指向其他网站的后退按钮。
【解决方案2】:

我通过 Google 和 Stack Overflow 搜索了许多网页,但没有任何建议可以解决我的问题。

经过多次尝试,我改变了测试该控制器的方式。然后我发现当我通过 Chrome 中的Ctrl + Shift + T 快捷方式重新打开页面时,总是会出现问题。所以页面运行了,但没有父窗口引用,因为它无法关闭。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        下面的代码对我有用:)

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-20
          • 1970-01-01
          • 2015-06-08
          相关资源
          最近更新 更多