有没有一种方法可以从 Stack Overflow 捕获如下window.onbeforeunload
确认对话框的结果(在离开“提问”页面而不发布问题时会发生这种情况)?
这就是它在 Chrome 中的显示方式,我相信它在其他浏览器中略有不同,但你总是有某种形式的是/否按钮。
大概如果他们在事件触发后仍然在有问题的页面上,他们会选择留下来,你可以通过观察 js 的顺序来弄清楚这一点。但是我想知道如何确定他们是否点击了“离开此页面”?
我已经实现了如下:
// concept taken from SO implementation
function setConfirmUnload(showMessage, message) {
window.onbeforeunload = showMessage ? (message ? message : "this is a default message") : null;
}
// pseudo code
listen to changes on inputs
if any inputs fire a change event
call setConfirmUnload(true, 'My warning message')
注意我在我的网站中使用 jQuery。
我本质上是在尝试实现类似 Gmail 的草拟实现,其中如果用户离开页面时使用了他们已更改但未保存的表单,他们会被类似的对话框加热。如果他们选择放弃他们所做的更改并离开页面,我需要从数据库中清理一些临时记录(我正在考虑 AJAX 调用,或者只是提交带有delete
标志的表单),然后将它们发送到他们的路上。
我的问题还涉及:
在手动刷新页面后触发 onunload 处理程序中的 jQuery AJAX 调用。我如何保证 onunload 先发生?