前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Vue项目中阻止返回,弹出提示框,包括安卓、iOS物理返回

Vue项目中阻止返回,弹出提示框,包括安卓、iOS物理返回

作者头像
德顺
发布于 2019-12-17 10:37:37
发布于 2019-12-17 10:37:37
3.2K00
代码可运行
举报
文章被收录于专栏:前端资源前端资源
运行总次数:0
代码可运行

在一个移动端项目中,有一个需求,在未输入内容时点击返回(包括安卓、iOS等终端设备的物理返回按钮),弹窗提示,并且阻止返回上一个页面。

比较反人类的一种操作,不过只要能想到的就没有代码做不到的,在网上找到一个解决方案:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mounted() {
  // 按需使用:在页面一进来的时候,添加一个历史记录
  window.history.pushState(null, null, document.URL);
  // 给 window 添加一个 popstate 事件,拦截返回键,执行 this.onBrowserBack 事件,addEventListener 需要指向一个方法
  window.addEventListener("popstate", this.onBrowserBack, false);
},
destroyed() {
  // 页面销毁时必须要移除这个事件,vue 不刷新页面,不移除会重复执行
  window.removeEventListener("popstate", this.onBrowserBack, false);
},
watch: {
  // 弹框监听,当弹框显示的时候,pushState 添加一个历史,供返回键使用
  PopupShow: {
    handler(newVal, oldVal) {
      if (newVal.Terms === true) {
        window.history.pushState(null, null, document.URL);
      }
    },
    deep: true
  }
},
methods: {
  onBrowserBack() {
    // 这里写点击返回键时候的事件
    // 比如判断需求执行 back() 或者 go(-2) 或者 PopupShow=true 弹出提示框
  } 
}

注:popstate事件需要每个页面单独写,不适合写成公共方法。

声明:本文由w3h5原创,转载请注明出处:《Vue项目中阻止返回,弹出提示框,包括安卓、iOS物理返回》 https://cloud.tencent.com/developer/article/1554978

本文已加入 腾讯云自媒体分享计划 (点击加入)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
在vue中如何监听移动端的返回键
环境:vue.js+vant 问题:首页列表和分类页的列表用的同一个页面,页面区分用的是本地缓存,希望在分类页点击返回的时候,执行清除缓存,刷新页面 解决原理:利用history和浏览器刷新popstate状态去实现 每一次返回都会去历史记录回退 -1 所以就在进入页面之前 往历史记录里面多记录一次当前页面的链接。然后再回退的时候监听刷新,去做一些事情。 具体执行: 1、挂载完成后,判断浏览器是否支持popstate
IT工作者
2022/03/14
3.6K0
js监听手机端点击物理返回键或js监听pc端点击浏览器返回键
之前在项目中遇到一个问题,就是在微信网页上面本来是有返回按钮的,但是大多数人都为了方便,会使用安卓手机自带的物理返回键,这个返回键按下后,就会按照你浏览器的栈存储的路径来一层一层返回,就不执行你页面上的那个返回按钮的操作了,但是这个物理返回键的监听好像没有直接的办法进行,所以有人就想到了曲线的办法
lin_zone
2018/08/15
9.5K0
H5及微信小程序实测可用——监听手机返回键操作
微信小程序开发过程中我们经常遇到需要监听点击左上角返回、手机物理返回键或者左滑返回的需求 微信原生是没有API支持监听的 这时候我们可以借助以下两种方法实现该操作
我只会写Bug啊
2023/12/25
2.5K1
移动web开发中,好用的小方法
1.检查是否触屏设备 //此方法在chrome模拟手机的模式中似乎无效,但是在iphone中是有效的,在安卓中待测试 function isTouchDevice() { return ('ontouchstart' in document.documentElement); } 2.检测更多的设备和浏览器信息,靠的是ua信息 var browser={ versions:function(){ var u = navigator.userAgent, app = n
黒之染
2018/10/19
9870
z-index调不到最上层,换种思路:将组件加到body层下
需求描述为,点击视频或图片,将其放大或者播放在上图中的播放窗口中;下方区域居中显示对于图片或者视频的描述文字;黑色背景区域显示为覆盖全屏的黑色半透明窗体;右上角有播放关闭按钮,关闭后即关闭整个播放区域和黑色窗体背景;并且要求覆盖浏览器的返回按钮,返回时效果同点击关闭按钮。
玖柒的小窝
2021/11/02
3.5K0
z-index调不到最上层,换种思路:将组件加到body层下
Vue路由实现原理
其中pushState方法和replaceState方法可以分别增加和替换掉一条记录(必须同源),而不会重新加载页面。
愤怒的小鸟
2021/01/11
1.2K0
经常被问到的react-router实现原理详解
而且还经常会被xxx面试官问到,什么是前端路由,它的原理的是什么,它是怎么实现,跳转不刷新页面的...
夏天的味道123
2022/10/17
5460
Web 游戏监听浏览器返回点击事件 !
做 web 游戏时,通常游戏是嵌入到 app 内部,通过 app 内部入口,跳转进入所开发的 web 游戏,app 内会预留返回功能,web 游戏可以使用 webview 自带的返回,实现游戏内不同场景的跳转。
一枚小工
2020/07/22
1.9K0
一文搞懂前端路由的原理(Vue、React、Angular)
前端三大框架 Angular、React、Vue ,它们的路由解决方案 angular/router、react-router、vue-router 都是基于前端路由原理进行封装实现的,因此将前端路由原理进行了解和掌握是很有必要的,因为我们再使用的过程中也难免会遇到一些坑,一旦我们掌握了它的实现原理,那么就能在开发中对路由的使用更加游刃有余。
前端老道
2022/03/29
1.3K0
一文搞懂前端路由的原理(Vue、React、Angular)
前端开发:vue路由之前端路由的原理
现在mvvm框架已经火的不成样了,React、Angular和Vue.js的发布让前端工程化成为主流,大前端时代已经到来了,最近接触了vue的前端路由,闲来无事就开始琢磨源码,下面来说说前端路由的原理。
用户5827212
2019/08/07
9990
从 Prompt 来看微前端路由劫持原理
在结合微前端框架 icestark 使用时,跳转到同一微应用的其他路由,会产生异常的效果:Prompt 弹窗了两次。
coder_koala
2021/08/26
9950
大前端开发中的路由管理之二:web篇
1、Web路由需要实现的目标         上一篇文章中我们谈到了SPA(Single-page application)的出现,但SPA的应用有个需要解决的问题,就是浏览器只加载记录了一个html,所以当刷新浏览器时js会重新执行,当前页面的内容便会丢失;页面跳转时浏览器不会向服务器发出新的页面请求,浏览器也就无法前进、后退页面。         所以前端web路由需要实现以下目标:       (1)能根据页面URL来获取不同的模块,但不发起新的页面请求;       (2)能监听URL的变化。
QQ音乐技术团队
2021/11/08
1.6K0
vue-router的超神之路
本文是vue-router系列。这里从浏览器到vue-router原理到最佳实践都会有详细的讲解。由于篇幅较长,建议可以选择感兴趣的目录看。
用户4131414
2020/03/19
1.6K0
前端H5与安卓和ios之间通信
在一些app场景中,经常看到app里面嵌套H5页面, 安卓和ios提供一个空壳子,方法两者互相调用。上一周就是写H5页面让安卓和ios调用使用,中间传参,接受参数。通过 window.wx 对象调用一些原生 app 的功能。这个H5页面,我用的是vue来写的。用到了vue全家桶。
小周sir
2019/09/23
2.4K0
前端H5与安卓和ios之间通信
深度:从零编写一个微前端框架
那么现在我们需要手写一个微前端框架,首先得让大家知道什么是微前端,现在微前端模式分很多种,但是大都是一个基座+多个子应用模式,根据子应用注册的规则,去展示子应用。
Peter谭金杰
2020/05/18
1.3K0
深度:从零编写一个微前端框架
从Vue-router到html5的pushState
首先,我们知道vue实现的单页应用中一般不会去刷新页面,因为刷新之后页面中的vuex数据就不见了。 其次,我们也知道一般情况下,url变更的时候,比如指定location.href、history.push、replace等,页面就会刷新。
木子墨
2019/02/25
3.1K0
从Vue-router到html5的pushState
H5如何与IOS和安卓进行交互
写在前面 很久没更新了,真的是没时间,周末要做兼职,工作日要加班赶项目,筋疲力尽了,今天稍微好点,更新一下吧,最近用的一些东西! 问题描述 我们开发一款软件,其中涉及到一些支付的问题,这边担心IOS的App无法通过AppleStore的审核,所以中间支付的模块使用H5进行内嵌,也就是直接使用webview进行调起H5完成对应的功能, 代码 /** * @FUNCTION memberRecharge * @params NaviType是否需要显示导航栏 1 不显示 2 显示 3 会员充值(
何处锦绣不灰堆
2021/06/29
2K0
web app 中物理返回键的监听
使用Vue + Vant 进行web app 的开发,需要处理 android 自带的物理返回键,对不同页面,点击物理返回键进行不同的处理
用户9914333
2022/07/22
1.2K0
阿里P7:你了解路由吗?
年后被迫跳槽,其中种种一言难尽,于是投递简历,虽然有了年前尝试积累,但年前毕竟不是真正的跳槽。由于没有遵循大佬们的跳槽心得,面试时,先投小厂,再投大厂,导致,随机面试,上来就遇见了个阿里的P7,被问的哑口无言。时隔半月,复盘总结
用户7413032
2024/01/29
1370
阿里P7:你了解路由吗?
vue router 4 源码篇:router history的原生结合
哈喽大咖好,我是跑手,本次给大家继续探讨vue-router@4.x源码中有关Web History API能力的部分,也就是官方文档中历史模式。
南山种子外卖跑手
2022/10/13
1.3K0
相关推荐
在vue中如何监听移动端的返回键
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文