javascript - Onbeforeunload 不提示确认页面重新加载
问题描述
我正在添加一个事件侦听器,用于onbeforeunload
在用户尝试离开页面时提示确认消息。
不幸的是,我不希望在用户尝试重新加载页面时出现确认消息。
我该怎么做呢?
这是我到目前为止所拥有的:
window.onbeforeunload = function() {
return "";
}
解决方案
完全有可能1。
您可以通过快捷键+监听该keydown
事件并检查用户是否重新加载了页面。如果是这样,您可以设置一个变量(在我们的例子中为 )并设置一个超时以在 100 毫秒后将其设置回 false。CtrlRisReload
true
当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这仅适用于快捷方式。如果用户手动单击重新加载按钮,则无法区分关闭/重新加载
推荐阅读
- visual-studio-code - 如何在自定义片段中自动大写用户输入
- python-3.x - 1. 从字符串中删除所有小写字母。输入="amiT123" 输出="T123"
- c# - SQL Server db 在不运行更新数据库的情况下更新项目构建(使用 EF6 和代码优先迁移)
- python-3.x - 使用 cv2 进行灰度图像旋转
- php - 如何将本地文件夹的多个文件上传到ftp文件夹?
- excel - 自动格式化提前结束
- c - 如何将 Python 字符串列表转换为 wchar_t 的 C 数组?
- python - 无法在评论删除页面显示帖子标题
- docker - Docker 中的 Kubernetes 集群是什么?
- r - 在 dplyr 管道中加入非 R 标准列名