我需要在用户离开页面时提醒他们一些事情,这可以通过 window.onUnload 事件来处理。但我还需要通过在页面上提交表单或单击导航链接来检查用户是否正在导航。我可以使用表单的 onSubmit 事件设置一个标志,然后在 window.onUnload 事件中检查该标志,但我不确定哪个先触发。
有任何想法吗 ?
我需要在用户离开页面时提醒他们一些事情,这可以通过 window.onUnload 事件来处理。但我还需要通过在页面上提交表单或单击导航链接来检查用户是否正在导航。我可以使用表单的 onSubmit 事件设置一个标志,然后在 window.onUnload 事件中检查该标志,但我不确定哪个先触发。
有任何想法吗 ?
你实际上想要 window.onbeforeunload
window.onbeforeunload = function (e) {
var e = e || window.event;
// For IE and Firefox
if (e) {
e.returnValue = 'Are You Sure?';
}
// For Safari
return 'Are You Sure?';
};
事实证明 form.onSubmit 事件首先触发,所以我可以使用一个标志。我只在 Firefox 和 Safari 中检查过这个。
var isRefresh = true;
window.onunload = function () {
alert('the page was ' + (isRefresh == false ? 'NOT ' : '') + 'refreshed');
}
$('a').live('click', function () { isRefresh = false; alert('a link was clicked'); });
$('form').bind('submit', function () { isRefresh = false; alert('form was submitted'); });
基于如何捕获浏览器窗口关闭事件?. 我添加了刷新逻辑。