vue阻止页面回退的实现方法(浏览器适用)

作者:m0_48232426 时间:2024-06-07 15:24:10 

vue阻止页面回退的方法

如何阻止页面回退?

VUE中跳转页面后,阻止返回的方法有很多种,这里就不一一列举,我是用vue-prevent-browser-back第三方库来阻止页面返回,这个方法使用起来超级方便。

使用步骤

1.安装

代码如下:

npm install vue-prevent-browser-back --save

2.引入方式

代码如下:

import preventBack from 'vue-prevent-browser-back';//组件内单独引入

3.使用实例

代码如下:

<template>
? ? <div class="container">
? ? ? ? <div class="container-text">
? ? ? ? ? <p>禁止返回上级页面!</p>
? ? ? ? </div>
? ? </div>
</template>
<script>
import preventBack from 'vue-prevent-browser-back';//组件内单独引入
export default {
? ? name: '',
? ? props: {},
? ? mixins: [preventBack],//注入 ?阻止返回上一页
? ? components: {},
? ? data() {
? ? ? ? return {};
? ? },
? ? computed: {},
? ? watch: {},
? ? methods: {},
? ? created() {},
? ? mounted() {}
};
</script>

以上介绍了vue-prevent-browser-back的使用,在组件内引入后加入**mixins: [preventBack]**就完成了,是不是比其他方法更简单呢。

vue阻止页面回退(backspace键)

原生js方法  

<script language="javascript">
? //防止页面后退 ?使用在vue时 挂载到mounted中
? history.pushState(null, null, document.URL);
? window.addEventListener('popstate', function () {
? ? ?history.pushState(null, null, document.URL);
? });
</script>

vue中结合vuex方法

1.在路由配置中给这个路由添加meta信息,比如:

{
? ? path: '/index',
? ? component: Index,
? ? meta: {allowBack: false}
}

2.在全局的router.beforeEach 函数里面获取allowBack的状态,同时更新vuex的allowBack的值,

let allowBack = true ? ?// ? ?给个默认值true
if (to.meta.allowBack !== undefined) {
? ? allowBack = to.meta.allowBack
}
if (!allowBack) {
? ? ? history.pushState(null, null, location.href)
} ? ?
store.dispatch('updateAppSetting', {
? ? allowBack: allowBack
})

**这段代码得写在next()的后面,因为写在next()前面location.href并不是to的地址,这点跟vue1.0有点不同。

location.href 获取的仍不是to的地址,所以得根据to的信息来拼起来

3.接下来就是最核心的了,在app.vue的mounted里面写onpopstate事件:

window.onpopstate = () => {
? ? if (!this.allowBack) { ? ?// ? ?这个allowBack 是存在vuex里面的变量
? ? ? ? history.go(1)
? ? }
}

来源:https://blog.csdn.net/m0_48232426/article/details/125318562

标签:vue,阻止,页面回退,浏览器
0
投稿

猜你喜欢

  • 巧用Dreamweaver4文件库更新网站

    2007-02-03 11:31:00
  • MySQL如何使用使用Xtrabackup进行备份和恢复

    2024-01-24 14:45:49
  • JavaScript Reduce使用详解

    2024-04-19 10:16:03
  • PHP如何实现HTTP验证

    2023-09-04 05:32:46
  • 对numpy中轴与维度的理解

    2022-03-20 11:58:33
  • 两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法

    2023-06-25 12:44:15
  • python matplotlib绘图,修改坐标轴刻度为文字的实例

    2023-09-29 12:27:57
  • Django 删除upload_to文件的步骤

    2022-03-23 05:47:14
  • 详解Python中生成随机数据的示例详解

    2021-12-21 03:56:17
  • 如何在SQL Server 2008下轻松调试T-SQL语句和存储过程

    2024-01-20 15:40:45
  • Python tkinter 列表框Listbox属性详情

    2023-09-16 14:06:26
  • Oracle数据库完整卸载的完整步骤

    2024-01-13 13:15:30
  • 解决pytorch 保存模型遇到的问题

    2021-12-13 08:26:37
  • SQL Server Alert发送告警邮件少了的原因

    2024-01-27 14:15:38
  • 如何用python爬取微博热搜数据并保存

    2021-10-21 14:13:38
  • PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法

    2024-04-10 10:38:49
  • Python 键盘事件详解

    2022-09-28 20:31:01
  • python保存图片的四个常用方法

    2023-10-03 15:06:37
  • 详解如何利用Python制作24点小游戏

    2022-02-04 17:22:42
  • Go事务中止时是否真的结束事务解析

    2023-07-07 11:35:35
  • asp之家 网络编程 m.aspxhome.com