vue阻止页面回退的实现方法(浏览器适用)
作者:m0_48232426 发布时间:2024-06-07 15:24:10
标签:vue,阻止,页面回退,浏览器
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
0
投稿
猜你喜欢
- 前言最近在工作经常会碰到对字符串进行去重操作,下面就给大家列出用Python如何处理的,话不多说了,来一起看看详细的介绍吧。比如说,要拿下面
- 目录一、需求二、实现连接Mysql并执行查询语句三、写一个错误处理函数四、设置二级缓存一、需求实现二级缓存程序运行起来后提示:“请输入命令:
- 本文实例讲述了Python实现周期性抓取网页内容的方法。分享给大家供大家参考,具体如下:1.使用sched模块可以周期性地执行指定函数2.在
- 本文实例讲述了ES6 let和const定义变量与常量的应用。分享给大家供大家参考,具体如下:关于 letlet是小作用域的变量的声明{ &
- 1.查看Anaconda中有哪些虚拟环境及所在目录:在桌面搜索框中输入Anaconda Prompt并打开输入命令conda env lis
- 1.消息丢失1.生产者发送失败所有消息队列都可能发生的问题生产者发送消息后,队列未成功接收(网络原因或其他)而生产者不知情,消息丢失生产者发
- 本文代码是使用python抓取京东小米8手机的配置信息首先找到小米8商品的链接:https://item.jd.com/7437788.ht
- 二维码作为一种信息传递的工具,在当今社会发挥了重要作用。从手机用户登录到手机支付,生活的各个角落都能看到二维码的存在。那你知道二维码是怎么解
- 介绍本期案例是带着大家制作一个属于自己的GUI图形化界面—>用于设计签名的哦(效果如下图),是不是感觉很好玩,是不
- urllib模块发起的POST请求案例:爬取百度翻译的翻译结果1.通过浏览器捉包工具,找到POST请求的url针对ajax页面请求的所对应u
- 1. 新建项目在命令行窗口下输入scrapy startproject scrapytest, 如下然后就自动创建了相应的文件,如下2. 修
- 前言:内容提要:本文比较了 Python 中用于列表排序的两种函数 sort() 和 sorted(),帮助您选择合适的排序函数。对列表排序
- 在客户端请求的时候增加了自定义的http头,请求如下所示: 自定义http请求头var_dump(getallheaders);一
- 相比SQL Server 2000提供的FOR XML查询,SQL Server 2005版本对现有功能增强的基础上增加了不少新功能,最为吸
- 其实就是通过 FontProperties来设置的,请参考以下代码:import matplotlib.pyplot as pltfrom
- 介绍Python常见的字符串处理方式字符串截取 >>>s = 'hello'>>>s[0
- 一、连接Go语言中的database/sql包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数据库驱动。使用database/s
- python代码换行就是每行后面加个 \举个栗子:time = "2017"print "one"
- Vue金额、日期格式化插件@formatjs/intl使用vue项目中我们可以使用第三方比较牛的日期、金额数字格式化的插件:@formatj
- 各大著名厂家、公司的banner广告设计欣赏,尺寸468x60,gif格式!有acer,阿尔卡特,AMD,中国电信,爱立信,Greatwal