Chrome更新后,JavaScript无法正常工作

问题描述:

我经常意外地关闭了我的Chrome浏览器,必须重新打开并重新加载我一直在使用的所有选项卡。由于Chrome在关闭机制之前没有内置确认,我写了一个简单的页面在关闭之前要求确认。我在其他选项卡中打开该页面。Chrome更新后,JavaScript无法正常工作

<!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> 

最近,我从56版我的Chrome浏览器更新为60.现在代码似乎没有工作,因为它不再关闭之前要求确认。我尝试了很多互联网上不同的变体,但似乎没有任何变化。

注:我对web开发很陌生。

+0

您是否收到任何控制台错误? –

+0

@LewisBrowne号 – zindarod

按照MDN docs

为了打击恶意弹出窗口,一些浏览器,除非该页面已与互动中不显示beforeunload事件处理程序创建的提示;有些根本不显示它们。

所以,我认为你的功能并不能保证运行,尤其是因为Chrome60显然有第一个行为。从notes

从铬60开始,系统beforeunload对话框将仅当帧试图显示它已经接收到用户手势或用户交互出现(或者如果任何嵌入的帧已经接收到这样的手势)。

所以,如果你想继续使用这种方法,你可能需要在会话的某个时候与页面交互。

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

+2

是的,这是专门铬60更改/弃用中提到:https://developers.google.com/web/updates/2017/06/chrome-60-deprecations#require_user_gesture_for_beforeunload_dialogs – DarthJDG

+0

是的,我注意到,每当我突出显示页面中的文本然后关闭时,确认框就会出现。有没有办法让这个自动化? – zindarod

+0

当然,我想你可以使用[Selenium](http://www.seleniumhq.org/projects/webdriver/)等自动化一些交互。但是,真的,我不认为你需要 - Chrome允许你在打开窗口时打开之前的标签来“继续你离开的地方”,所以你不应该因为意外关闭窗口而丢失任何东西。尝试检查你的'chrome:// settings'页面,看看是否启用。 –