阻止浏览器刷新,后退,关闭事件(onbeforeunload事件)

阻止浏览器刷新,后退,关闭事件(onbeforeunload事件)

onbeforeunload属性

描述

onbeforeunload:事件在即将离开当前页面(刷新或关闭)时触发*。
该事件可用于弹出对话框,提示用户是继续浏览页面还是离开当前页面。
对话框默认的提示信息根据不同的浏览器有所不同,标准的信息类似 “确定要离开此页吗?”。该信息不能删除。但你可以自定义一些消息提示与标准信息一起显示在对话框。
注意: 如果你没有在 元素上指定 onbeforeunload 事件,则需要在 window 对象上添加事件,并使用 returnValue 属性创建自定义信息(查看以下语法实例)。

语法

HTML中:

<body onbeforeunload="SomeJavaScriptCode">

javaSript中:

object.onbeforeunload=function(){SomeJavaScriptCode};

javaSript中使用addEventListener()方法:

object.addEventListener("beforeunload", SomeJavaScriptCode);

注意: Internet Explorer 8 及更早 IE 版本不支持 addEventListener() 方法。

实例

方法一:

window.onbeforeunload = function(){
	return "是否要离开";
}

方法二:

window.onbeforeunload = function(event) {
    event.returnValue = "我在这写点东西...";
};

方法三:

var beforeunloadHandler = function (e){
	e = e || window.event;
	e.returnValue = "我在这写点东西...";
}
window.addEventListener("beforeunload", (e) => beforeunloadHandler(e));

相关bug

通过浏览器刷新按钮或F5触发刷新时,也会给出一个弹框,让用户选择“不重新加载”还是“重新加载”:
在这里插入图片描述
通过右上角关闭按钮,或者a链接跳转时触发
在这里插入图片描述

但是桌面版chrome 60版本开始,如果用户没有在页面上进行交互(点击元素,按键事件,手势等动作),点击浏览器的返回按钮,刷新按钮时,chrome不会给出弹框,会直接进行返回、刷新的动作。
直接通过command + r进行刷新浏览器,和点击a标签跳转时,会弹框,因为浏览器已经检测到你的键盘按键交互和鼠标点击a标签的交互了。

这就是报下面错误的原因:
在这里插入图片描述
相关链接:https://github.com/mrdulin/blog/issues/38
此问题尚未解决,望留言解答!!!谢谢~~

相关业务场景:

https://tapd.tencent.com/创建需求,csdn发布文章,apizza接口编辑,
如果用户没有在页面上进行交互(例如:编辑文字)那么点击浏览器的返回按钮,刷新按钮时直接进行返回、刷新的动作在某种程度上是否符合业务场景需求。

部分代码执行情况

  1. vue.js中路由跳转无法自动触发事件。(在csdn发布文章返回键可触发事件,应该为手动触发吧)
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值