【发布时间】:2011-03-23 00:43:15
【问题描述】:
有没有一种方法可以捕获window.onbeforeunload 确认对话框的结果,如下面的 Stack Overflow 中的结果(这种情况发生在离开“”页面而不发布问题时)?
这就是它在 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 标志的表单)然后发送它们他们的方式。
我的问题还涉及:
【问题讨论】:
标签: javascript jquery dom-events onunload window.onunload