【发布时间】:2013-10-23 08:10:18
【问题描述】:
我正在使用onbeforeunload 事件在关闭页面期间执行操作。
我不希望事件发生在 Refresh / F5 的情况下。
有没有办法或其他事件来做到这一点?
【问题讨论】:
标签: javascript jquery html onbeforeunload
我正在使用onbeforeunload 事件在关闭页面期间执行操作。
我不希望事件发生在 Refresh / F5 的情况下。
有没有办法或其他事件来做到这一点?
【问题讨论】:
标签: javascript jquery html onbeforeunload
不幸的是onbeforeunload 事件在浏览器中监听页面状态。转到另一个页面以及刷新会改变页面状态,这意味着无论如何都会触发onbeforeunload。
所以我认为只捕获刷新是不可能的。
但是,如果你通过 JavaScript 监听并阻止Keypress,那么它是可以实现的。
可以通过 F5 和 CtrlR 键来完成刷新,因此您的目标是阻止这些操作。
使用 jQuery .keydown() 你可以检测到这些键码:
对于 CtrlR
$(document).keydown(function (e) {
if (e.keyCode == 65 && e.ctrlKey) {
e.preventDefault();
}
});
对于 F5
$(document).keydown(function (e) {
if (e.which || e.keyCode) == 116) {
e.preventDefault();
}
});
【讨论】:
【讨论】:
我想在卸载前添加消息警报,所以我的解决方案是这样的:
$(document).ready(function(){
window.onbeforeunload = PopIt;
$("a").click(function(){ window.onbeforeunload = UnPopIt; });
$(document).keydown(function(e){
if ((e.keyCode == 82 && e.ctrlKey) || (e.keyCode == 116)) {
window.onbeforeunload = UnPopIt;
}
});
});
function PopIt() { return "My message before leaving"; }
function UnPopIt() { /* nothing to return */ }
第三行 ($("a").click...) 是为了避免在 web 部分之间导航时显示警报。
【讨论】: