Chrome阻止用户关闭BeforeUnload对话框

Chrome prevents user from closing onBeforeUnload dialog

本文关键字:BeforeUnload 对话框 用户 Chrome      更新时间:2023-09-26

一个客户端在Google Chrome中遇到了一个非常奇怪的错误。她刚打电话给我,事情又发生了第二次。

在CRM的报价页上,如果报价尚未保存,我会在onbeforenload上返回一个字符串。该对话框只是警告用户确保他/她在离开页面之前保存了报价。

这是两周内第二次对话陷入困境。单击"停留在此页面"或"离开此页面",两个按钮都会立即再次显示相同的对话框。由于对话框位于浏览器的顶部,甚至不可能将浏览器(或选项卡)作为一个整体关闭。唯一的解决方案:任务管理器。

在办公室里,我们使用相同的CRM(并且已经使用了好几个月),没有任何问题。我是在看谷歌Chrome漏洞还是谷歌Chrome安装错误?

$(function() {
    $(window).on('beforeunload', function() {
            if (quoteIsDirty) {
                return 'Warning - You have made changes to the quote, but have not saved your changes yet. Are you sure you want to close this page?';
            }
    });
});

如果看不到实际的代码,就很难判断。但这里有一些想法:

  • 触发beforeunload的多个或不同事件,如window.closewindow.location = ...
  • 具有指数回退或与脏状态不一致的类似机制的持久性函数
  • 比赛条件

这当然可能是Chrome的错误,但我已经学会了不愿意责怪Chrome,因为它几乎总是我的应用程序的问题。:)