我正在使用onbeforeunload
事件在结束页面中执行操作
我不希望在Refresh
/ F5 的情况下发生该事件。
有没有方法或其他事件可以做到这一点?
答案 0 :(得分:4)
不幸的是,onbeforeunload
事件会在浏览器中侦听页面状态。转到另一个页面以及刷新将更改页面状态,这意味着无论如何都会触发onbeforeunload
。
所以我认为不可能只抓住刷新。
但是,如果您通过JavaScript聆听并阻止Keypress
,那么就可以实现。
刷新可以通过 F5 和 Ctrl R 键完成,因此您的目标是阻止这些操作。
使用jQuery .keydown(),您可以检测到这些密钥代码:
对于 Ctrl R
$(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();
}
});
答案 1 :(得分:1)
答案 2 :(得分:0)
我想在onbeforeunload上添加一条消息提醒,所以我的解决方案就是这个:
$(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")。点击... )是为了避免在网页各部分之间导航时显示警告。