微信浏览器左上角返回按钮拦截功能


Posted in HTML / CSS onNovember 21, 2017

在微信公众号开发中,有时需要对浏览器左上角返回按钮进行拦截处理相关的页面逻辑,而并不是让页面直接返回上一页,之前在这个细节点上的一直实现得不是很好。但看到京东购物公众号上的效果却实现得非常好,所以自己也开始了这方面的尝试。京东的效果如下图:

微信浏览器左上角返回按钮拦截功能

从上图京东购物效果上来看,在点击搜索拉起一个搜索界面,然后点击左上角反回,只是将搜索界面收起,而页面没有重新像读取进度条一样去返回,而我页面需要的正是这样的效果,下面就用vue来做一个这个过程的demo吧。

前提:微信左上角的返回按钮其实无法被拦截,但是可以监听到这个返回事件。

思路:要想真正拦截返回事件,可以当前页面先向window.history中添加一个记录(实际只是在历史记录堆栈中添加一条记录pushState,浏览器并不会真正去加载这个路径),当点击返回时,监听到返回事件处理自己想处理的逻辑,反正微信它是一定要执行返回,刚添加的那条记录就会从window.history拿出并将此路径替换当前页面路径。注意:这里只是路径的替换,只是将路径换了个名字,并不是会真正去加载这个路径。

实现:demo里建立了两个vue页面(first 和 two),第一个页面跳转到到第二个页面。然后在第二个页面弹出一个蒙层,这时点击左上角返回时,并不是返回first,而是先将蒙层消失,再次点击返回时才是返回上一页;

实现效果如下:

微信浏览器左上角返回按钮拦截功能

 
 

相关代码讲解:

1 在第二个页面mounted方法中加入,添加监听返回事件方法。当返回按钮被点击时,这里让弹出的蒙层隐藏;

mounted() {
    let that = this;
    // 添加返回事件监听
    window.addEventListener("popstate", function(e) {
      that.isShowTestDiv = false;
    }, false);
  },

2 监听蒙层,当它显示时,在window.history(历史堆栈)中添加一条记录;

watch: {
    isShowTestDiv: function(newVal, oldVal) {
      if (newVal === true) {
        this.pushHistory();
      }
    }
  }
    pushHistory() { // 修改history
      var state = {
        title: "",
        url: "/two" // 这个url可以随便填,只是为了不让浏览器显示的url地址发生变化,对页面其实无影响
      };
      window.history.pushState(state, state.title, state.url);
    },

3 最后弹出的蒙层如果用户点蒙层上相关操作将蒙层关闭,那么要手动将自己添加的那条记录从history中移除,在vue将路由back一下即可。

helloClick() { // 点击弹出来的hello蒙板
      this.isShowTestDiv = false;
      this.$router.back(); // 将添加记录从history中移除
    }

    demo地址

gitHub: https://github.com/LiJinShi/wechat_back_vue

总结

以上所述是小编给大家介绍的微信浏览器左上角返回按钮拦截功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

HTML / CSS 相关文章推荐
CSS3系列之3D制作方法案例
Aug 14 HTML / CSS
css3与html5实现响应式导航菜单(导航栏)效果分享
Feb 12 HTML / CSS
css3制作彩色边线3d立体按钮的示例(css3按钮)
May 06 HTML / CSS
CSS3实现自定义Checkbox特效实例代码
Apr 24 HTML / CSS
纯css3实现思维导图样式示例
Nov 01 HTML / CSS
html5的localstorage详解
May 09 HTML / CSS
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
Mar 25 HTML / CSS
谈一谈HTML5本地存储技术
Mar 02 HTML / CSS
HTML5实现文件断点续传的方法
Jan 04 HTML / CSS
利用三角函数在canvas上画虚线的方法
Jan 11 HTML / CSS
HTML5实现音频和视频嵌入的方法
Aug 22 HTML / CSS
CSS 实现多彩、智能的阴影效果
May 12 HTML / CSS
html5使用Canvas绘图的使用方法
Nov 21 #HTML / CSS
详解HTML5新增标签
Nov 27 #HTML / CSS
详解HTML5中垂直上下居中的解决方案
Dec 20 #HTML / CSS
HTML5混合开发二维码扫描以及调用本地摄像头
Dec 27 #HTML / CSS
HTML5实现Notification API桌面通知功能
Mar 02 #HTML / CSS
HTML5 canvas实现雪花飘落特效
Mar 08 #HTML / CSS
HTML5 用动画的表现形式装载图像
Mar 08 #HTML / CSS
You might like
PHP批量生成静态HTML的简单原理和方法
2014/04/20 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
JavaScript中获取元素索引的函数
2010/09/10 Javascript
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
Jquery注册事件实现方法
2015/05/18 Javascript
Html5 js实现手风琴效果
2020/04/17 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
浅谈关于.vue文件中style的scoped属性
2017/08/19 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
js实现控制文件拖拽并获取拖拽内容功能
2018/02/17 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
vue中动态添加class类名的方法
2018/09/05 Javascript
用Python编程实现语音控制电脑
2014/04/01 Python
python实现文件分组复制到不同目录的例子
2014/06/04 Python
python求列表交集的方法汇总
2014/11/10 Python
python正则表达式re之compile函数解析
2017/10/25 Python
python 读取DICOM头文件的实例
2018/05/07 Python
Python 访问限制 private public的详细介绍
2018/10/16 Python
对Python w和w+权限的区别详解
2019/01/23 Python
Python实现判断一个整数是否为回文数算法示例
2019/03/02 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
Elemental Herbology官网:英国美容品牌
2019/04/27 全球购物
大门门卫岗位职责
2013/11/30 职场文书
原材料检验岗位职责
2014/03/15 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
庆祝教师节标语
2014/10/09 职场文书
三八妇女节慰问信
2015/02/14 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书
电影复兴之路观后感
2015/06/02 职场文书
一个都不能少观后感
2015/06/04 职场文书
公司庆典主持词
2015/07/04 职场文书
社区结对共建协议书
2016/03/23 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书
Hive HQL支持2种查询语句风格
2022/06/25 数据库