问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

vue-touch右滑动禁止浏览器返回

发布网友 发布时间:2022-12-23 05:05

我来回答

1个回答

热心网友 时间:2024-04-02 14:28

1、vue 禁止浏览器后退
需求是:需要某个路由不能通过浏览器返回,同时不影响相互之间的切换
整理一下解决方法 和 使用方法:

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

{ path: '/home', component: xxx, 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) } }

2、js禁止页面后退

现在很多的内部系统,一些界面,都是用户手动点击退出按钮的。但是为了避免,用户误操作 点击浏览器后退,或者用鼠标手势后退什么的。容易出现误操作。
所以在有些页面上,适当的禁用浏览器的后退,是可以提高很大的用户体验。
在网上查,可以查到很多js禁用后退的材料。

用的多的方法如下:

1、回退后,产生一个前进事件。
这种方式,不算是一个满意的解决方式。因为用户能体验到,界面的后退,前进。体验不好。

<script type="text/javascript">

//处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外
function banBackSpace(e){
var ev = e || window.event;//获取event对象
var obj = ev.target || ev.srcElement;//获取事件源

var t = obj.type || obj.getAttribute('type');//获取事件源类型

//获取作为判断条件的事件类型
var vReadOnly = obj.getAttribute('readonly');
var vEnabled = obj.getAttribute('enabled');
//处理null值情况
vReadOnly = (vReadOnly == null) ? false : vReadOnly;
vEnabled = (vEnabled == null) ? true : vEnabled;

//当敲Backspace键时,事件源类型为密码或单行、多行文本的,
//并且readonly属性为true或enabled属性为false的,则退格键失效
var flag1=(ev.keyCode == 8 && (t=="password" || t=="text" || t=="textarea")
&& (vReadOnly==true || vEnabled!=true))?true:false;

//当敲Backspace键时,事件源类型非密码或单行、多行文本的,则退格键失效
var flag2=(ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea")
?true:false;

//判断
if(flag2){
return false;
}
if(flag1){
return false;
}
}

//禁止后退键 作用于Firefox、Opera
document.banBackSpace;
//禁止后退键 作用于IE、Chrome
document.banBackSpace;

</script>

3、终极方案:
也是查找了好多资料才找到的,这种方式,可以消除 后退的所有动作。包括 键盘、鼠标手势等产生的后退动作。

<script language="javascript">
//防止页面后退
history.pushState(null, null, document.URL);
window.addEventListener('popstate', function () {
history.pushState(null, null, document.URL);
});
</script>

现在,我们项目中就使用了第三种方式。在常用浏览器中,都可以禁用了后退。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我用耳机玩爱唱久久怎么唱出来的不响? 电脑ktv点歌软件有哪些电脑用什么点歌软件比较好 更换变速箱油后,汽车刹车和起步时底盘常有嘎啦嘎啦的异响是什么原因... 格兰仕空调口碑怎么样 格兰仕空调的优缺点有哪些? 格兰仕空调怎么样?质量好吗? 什么是PNC金融服务集团 挖出蛇是好事还是坏事? 微信换行怎么换到下一行 微信如何将自己的位置定位发绐别人 黄中源,张学友,郑中基之间是什么关系? 华为手机同时出现微信语音时长和电话时长怎么回事 爱惜芳心莫轻吐用了什么修辞手法 机甲战士模拟器的金手指的选项在哪?拜托各位了 3Q 机甲世纪1级小号吃情人能升到多少级? 战地机甲模拟无限金币,有菜单,没有广告 终极森林模拟器无限经验版怎么玩 下载平安好车主收费吗 请问卖农药需要什么证 国美现在这情形面临破产还能在国美买洗衣机吗 我会在水中漂浮起来,但是眼睛看着水池地面反而有点害怕... 11月5号国美买的洗衣机还能退货吗 我眼睛是经常红的,有眼血线,怕光的东西,也怕水洗完澡出来超级红眼睛,怎 ... 国美电器洗衣机送货怎么知道是正品的 为什么我的眼睛碰水有异样的感觉,就是很不舒服,类似痛,但是我流泪不痛... 眼睛怕水 如何让眼睛不怕水 还有鼻子和耳朵 游泳这个好麻烦 我的眼睛怕水,游泳要戴泳镜 12v电瓶都有多少A? 我想问一下河南考注会什么时候报名 Vue项目按钮重复提交 steam退款的具体操作步骤是什么呢? 蛋黄酥做法 蛋黄酥做法介绍 拇指西瓜怎么吃才好吃,拇指西瓜怎么吃 我想问问学语言类专业有什么工作 ...怎么将他们分成均分为10组?然后再从每组里抽30%组成一列?_百度... officeformac的excel使用不了xlookup 圈子里5条高压线是什么 海鬼鱼皮能吃吗 i510400f怎么搭配? ln 命令详解 减刑限度条件有哪些 减刑的条件限度有哪些 2001~2002赛季摩托罗拉中国男子篮球甲A联赛的介绍 2001~2002赛季摩托罗拉中国男子篮球甲A联赛的大事件 刚出生没几天的宝宝老是吐奶怎么办 等额本息可以缩短还款年限吗? 注销后公安局还能查到聊天记录吗 被注销后还能查到聊天记录吗? 注销后之前的聊天记录还在吗?