【问题标题】:JavaScript not working after Chrome updateChrome 更新后 JavaScript 无法正常工作
【发布时间】:2017-08-14 09:49:28
【问题描述】:

我经常不小心关闭 Chrome 浏览器,不得不重新打开并重新加载我一直在处理的所有标签。由于 Chrome 没有内置的关闭前确认机制,我写了一个简单的页面来要求关闭前确认。我在我的其他选项卡中保持该页面处于打开状态。

<!DOCTYPE html>
<html>
    <body>
    <p>This page is to prevent accidental closing of Chrome.</p>
        <script language="JavaScript">

            window.onbeforeunload = function () {
                return "Are you sure?";
            };
        </script>
    </body>
</html>

最近我将 Chrome 浏览器从 56 版更新到了 60 版。现在代码似乎无法正常工作,因为它不再要求在关闭之前进行确认。我从互联网上尝试了许多不同的变体,但似乎都不起作用。

注意:我对 Web 开发非常陌生。

【问题讨论】:

  • 您是否遇到任何控制台错误?
  • @LewisBrowne No.

标签: javascript google-chrome onbeforeunload


【解决方案1】:

根据MDN docs

为了防止不需要的弹出窗口,一些浏览器不会显示在 beforeunload 事件处理程序中创建的提示,除非页面已经被交互过;有些根本不显示。

所以,我认为你的函数不能保证运行,特别是因为 Chrome 60 明确具有第一个行为。来自notes

从 Chrome 60 开始,只有在尝试显示它的框架收到用户手势或用户交互(或者任何嵌入的框架收到此类手势)时,才会出现 beforeunload 对话框。

因此,如果您想继续使用这种方法,您可能需要在会话中的某个时间点与页面进行交互。

或者,要打开您在重新启动 Chrome 时打开的所有标签,请尝试按 Ctrl-Shift-T

【讨论】:

  • 是的,这在 Chrome 60 更改/弃用中特别提到:developers.google.com/web/updates/2017/06/…
  • 是的,我注意到,每当我突出显示页面中的文本然后关闭时,都会出现确认框。有没有办法自动化这个?
  • 当然,我想你可以使用Selenium 之类的东西来自动化一些交互。但实际上,我认为您不需要 - Chrome 允许您通过在打开窗口时打开以前的选项卡来Continue where you left off,因此您不应该因为意外关闭窗口而真正失去任何东西。尝试检查您的 chrome://settings 页面并查看它是否已启用。
  • 我在任何时候都在 Chrome 中打开了大约 30 到 40 个标签。他们中的大多数我都以一种或另一种方式与之互动。如果我不小心关闭它们,重新加载所有这些页面以及我在其中所做的工作会浪费我很多时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多