哈喽 大家好啊 最近遇到一个问题,就是在提交订单成功后的页面,然后用户去浏览器返回,就导致又提交了一次
然后就想到了如果提交成功页面,就阻止浏览器返回操作
主要实现如下:
1.在mounted的钩子函数:
2.声明disableBrowserBack方法
3.在destoryed钩子函数清除掉监听事件
实现效果
扩展知识点:
1.history.length-- 属性保存着历史记录Url数量
history.back() - 等同于在浏览器点击后退按钮;
history.forward() - 等同于在浏览器中点击前进按钮;
history.go() - 加载 history 列表中的某个具体页面。
刚刚上面用到的是H5新增的属性事件
history.state-属性用来保存记录对象
history.pushState() - 向浏览器的历史记录中添加一个状态;
history.replaceState() - 修改当前历史记录实体;
popstate事件 - 当活动历史记录条目更改时,将触发
(1)history.state
返回当前页面的state对象
(2)history.pushState(state,title,url)
state:状态对象可以是任何可以序列化的对象
title: 当前大多数浏览器都忽略此参数,尽管将来可能会使用它。
url: 新历史记录条目的 URL 由此参数指定。如果未指定此参数,则将其设置为文档的当前 URL。
3.history.replaceState(state, title, url)
修改当前历史记录实体,如果你想更新当前的 state 对象或者当前历史实体的 URL 来响应用户的的动作的话这个方法将会非常有用。参数与 pushState 类似。
4.popstate事件
当活动历史记录条目更改时,将触发 popstate 事件。
需要注意的是调用 history.pushState() 或 history.replaceState() 不会触发 popstate 事件。只有在做出浏览器动作时,才会触发该事件,如用户点击浏览器的回退按钮(或者在 Javascript 代码中调用 history.back() 或者 history.forward() 方法)。
不同的浏览器在加载页面时处理 popstate 事件的形式存在差异。页面加载时 Chrome 和 Safari 通常会触发(emit ) popstate 事件,但 Firefox 则不会
参考原文:
(9条消息) vue里浏览器返回键如何禁用_vue禁用浏览器返回按钮_一晌贪欢i的博客-CSDN博客