Chrome会阻止用户关闭onBeforeUnload对话框

时间:2015-02-11 08:25:33

标签: javascript google-chrome events dialog onbeforeunload

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

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

现在是2周内的第二次,这种对话被卡住了。点击“留在此页面上”或“离开此页面”都会立即再次给出相同的对话框。并且由于对话框位于浏览器之上,因此即使关闭浏览器(或选项卡)也是不可能的。唯一的解决方案:任务经理。

在办公室,我们使用相同的CRM(并且已经使用了几个月),没有任何问题。我是在查看Google Chrome错误还是Google 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?';
            }
    });
});

1 个答案:

答案 0 :(得分:0)

无法看到实际代码,很难说清楚。但这里有一些想法:

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

这肯定可能是一个Chrome漏洞,但我已经学会了不愿责怪Chrome,因为它几乎总是我的应用程序的一个问题。 :)