在VUE3中禁止网页返回到上一页的方法
可以使用以下方法在Vue 3中禁止网页返回到上一页:
第一种:监听返回事件
使用返回监听事件,在用户点击返回按钮的时候触发,触发后使用window.history.forward()回到下一页。
代码如下:
<script language="javascript"> window.addEventListener('popstate', function () { window.history.forward(); }); </script>
这种方法无法阻止浏览器返回到上一页,所以就会导致页面会出现闪一下的情况,故不推荐使用这种方法。
第二种:在页面中修改历史记录
使用history.pushState()方法将当前URL添加到浏览器历史记录中,从而覆盖上一页的URL。
我们把参数设置为空,就相当于把上一页的记录清除了,就可以实现无法返回到上一页的目的。
例如,在Vue 3应用程序的created生命周期或setup语法的onMounted中添加history.pushState(null, null, location.href);
代码如下:
<script setup> onMounted(()=>{ history.pushState(null, null, location.href); }) </script>
这种方法就不会有闪一下的现象,但如果在多页面的应用中,你会发现,使用这种方法只能在当前页面生效。
第三种:在路由中修改历史记录
在路由的afterEach中清除上一页数据让路由无法跳转,从而实现禁止网页返回到上一页的目的。
注意:
history.pushState(null, null, location.href)不要添加到了beforeEach中,在这里添加起不到作用。因为这是在跳转之前执行,这个时候路由还能拿到上一页数据,从而完成跳转到下一页。
例如,在router.js中添加以下代码:
import { createRouter,createWebHistory } from "vue-router"; const router = createRouter({ history: createWebHistory(), routes:[ { name: 'test1', path:'/test1', component:() => import('../components/test1.vue'), }, { name:'test2', path:'/test2', component:() => import('../components/test2.vue') } ] }) // 每次进行路由跳转时都会执行 router.beforeEach(function(to,from,next){ // 注意写在此处起不到禁用返回的功能,因为这是在跳转前执行,路由还能拿到跳转之前的上一页数据 }) // 进行路由跳转后执行 router.afterEach(function(to,from){ // 跳转后清除一下上一页的数据 history.pushState(null, null, location.href); })
大家也可以在afterEach中添加禁止跳转的条件,例如仅对特定的页面进行限制,或者执行其他操作等。
到此这篇关于在VUE3中如何禁止网页返回到上一页的文章就介绍到这了,更多相关vue3禁止网页返回到上一页内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
vue使用vue-json-viewer展示JSON数据的详细步骤
最近在开发一个公司的投放管理系统的操作日志模块,要查看某条操作日志的请求参数,要将请求的参数以JSON格式的形式展示出来,下面这篇文章主要给大家介绍了vue使用vue-json-viewer展示JSON数据的相关资料,需要的朋友可以参考下2022-09-09详解vue中$nextTick和$forceUpdate的用法
这篇文章主要介绍了详解vue中$nextTick和$forceUpdate的用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-12-12
最新评论