我正在为onbeforeunload
添加一个事件侦听器,当用户试图离开页面时,该侦听器会提示一条确认消息。
不幸的是,我不希望在用户尝试重新加载页面时出现确认消息。
我该怎么做?
到目前为止,我拥有的是:
window.onbeforeunload = function() {
return "";
}
这是完全可能的1。
您可以监听keydown
事件,并检查用户是否通过快捷键Ctrl+R重新加载页面。如果是这样,您可以将一个变量(在本例中为isReload
(设置为true
,并设置一个超时,在100毫秒后将其设置回false。
当onbeforeunload
事件触发时,检查isReload
是否为true
。如果是,则返回null
以允许浏览器关闭。否则,返回""
以提示确认。
演示:
var isReload = false;
document.addEventListener('keydown', function(e){
if(e.ctrlKey && e.keyCode == 82){
isReload = true;
setTimeout(function(){isReload = false}, 100);
}
})
window.onbeforeunload = function(){
if(!isReload){
return "";
}else{
return null;
}
}
1这只适用于快捷方式。如果用户手动点击重新加载按钮,则无法区分关闭/重新加载