Chrome更新后JavaScript无法正常工作

zin*_*rod 5 javascript google-chrome onbeforeunload

我经常不小心关闭了我的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>
Run Code Online (Sandbox Code Playgroud)

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

注意:我是Web开发的新手。

Kar*_*eid 6

根据MDN文档

为了避免不必要的弹出窗口,除非页面已与之交互,否则某些浏览器不会显示在beforeunload事件处理程序中创建的提示。有些根本不显示它们。

因此,我认为不能保证您的功能能够运行,尤其是因为Chrome 60明确具有第一个行为。从笔记

从Chrome 60开始,仅当尝试显示它的框架已收到用户手势或用户交互(或任何嵌入式框架已收到此手势)时,才会显示beforeunload对话框。

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

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

  • 是的,在Chrome 60更改/弃用中特别提到了这一点:https://developers.google.com/web/updates/2017/06/chrome-60-deprecations#require_user_gesture_for_beforeunload_dialogs (2认同)