在 IE11 的“beforeunload”上保存数据

Saving data on `beforeunload` in IE11

我试图在 tab/window 关闭时使用 AJAX 将用户更改保存到服务器上的表单。

这是一个类似的问题: Intercept page exit event

我正在使用此代码:

$(window).bind('beforeunload', beforeUnload);

...除了使用 IE11 时,它似乎工作正常。

似乎当 IE11 中弹出用户验证警报时,之前 运行 的每个 JS 代码片段都会停止(并且我的数据不会通过网络发送)。 所以,如果用户选择离开,一切都没有了。

有人让它在该浏览器上运行吗? 可能吗?

编辑:

我现在发现它有时有效,但有时会失败。

当它失败时,它会启动 AJAX 调用(它在那个点遇到断点),但永远不会进入 success/fail 函数...(当我看到什么都没有发送时使用 Fiddler)

总之,它首先命中 AJAX 调用断点,然后显示确认对话框,当您选择离开页面时,不会发送任何内容...:(

事实证明,这种保存数据的方法并不可靠,只能靠运气。

此外,同步 XHR 现在已被标记为已弃用,因此使用它也不是一个好主意。

所以,我想网络不应该以这种方式工作...