在卸载之前不提示确认页面重新加载



我正在为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这只适用于快捷方式。如果用户手动点击重新加载按钮,则无法区分关闭/重新加载

最新更新