微信浏览器左上角返回按钮监听的实现


Posted in Javascript onMarch 04, 2020

问题描述1:

微信开发的时候,在公众号菜单中打开一个H5页面(如:个人中心),在这个页面上的一些操作,经过多次跳转后,点击左上角的返回按钮,发现会原封不动的返回至上一级页面。

即 公众号菜单->A->B->C,点击返回后,返回了B(且无刷新),目的是要在C直接跳转至A(公众号菜单->A->B->C,C->A),虽然可以在C上添加按钮之类的操作进行跳转(公众号菜单->A->B->C->A),但当点击左上角返回按钮后,依然是会返回C页面,并且,也无法确保用户不去点击左上角的返回按钮。

解决方式:

在C页面中添加如下javascript代码:

$(function(){ 
 pushHistory(); 

 window.addEventListener("popstate", function(e) { //回调函数中实现需要的功能
  alert("我监听到了浏览器的返回按钮事件啦"); 
  location.href='你要跳转的链接'; //在这里指定其返回的地址
 }, false); 
}); 
function pushHistory() { 
 var state = { 
  title: "title", 
  url: "__SELF__" 
 }; 
 window.history.pushState(state, state.title, state.url); 
}

问题描述2:

以上,解决了返回按钮的监听与控制,但是又出现了新的问题,即当从C->A后,点击返回按钮,依然会返回C页面,目的是在A页面点击返回则关闭网页返回至公众号对话页面。

解决方式:

PS:评论区中有人(@一路博客博主)指出新版微信jdk的关闭页面api已经改变,已在代码中标出
本人未亲自测试,各位可以两种方法都试试。

在A页面中添加如下javascript代码:

$(function(){
 pushHistory();

 window.addEventListener("popstate", function(e) {
 // 新版中使用wx.closeWindow()方法
  WeixinJSBridge.call('closeWindow');
 }, false);
});

function pushHistory() {
 var state = {
  title: "myCenter",
  url: "__SELF__"
 };
 window.history.pushState(state, state.title, state.url);
}

问题描述3:

在微信中进入页面就触发了popstate事件。然后页面会处于一直刷新状态。

解决方式:

定义boolean 变量bool=false。在页面加载后,采用setTimeout方法设置1.5s的超时,在超时执行方法中设置bool=true。

在popstate监听当中增加对bool的判断,当bool=true时,执行内容。
代码如下:

$(function(){ 
 pushHistory(); 
 var bool=false; 
 setTimeout(function(){ 
  bool=true; 
 },1500); 
 window.addEventListener("popstate", function(e) { 
  if(bool){ 
   alert("我监听到了浏览器的返回按钮事件啦");
  } 
 }, false); 
});

到此这篇关于微信浏览器左上角返回按钮监听的实现的文章就介绍到这了,更多相关微信浏览器返回按钮监听内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jQuery Mobile的loading对话框显示/隐藏方法分享
Nov 26 Javascript
JS循环遍历JSON数据的方法
Jul 08 Javascript
javascript中使用new与不使用实例化对象的区别
Jun 22 Javascript
javascript实现动态导入js与css等静态资源文件的方法
Jul 25 Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
Jan 27 Javascript
vue开发心得和技巧分享
Oct 27 Javascript
vue中mint-ui的使用方法
Apr 04 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
Aug 07 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
Aug 25 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
Mar 19 jQuery
原生JS无缝滑动轮播图
Oct 22 Javascript
在pycharm中开发vue的方法步骤
Mar 04 Javascript
js回调函数原理与用法案例分析
Mar 04 #Javascript
在pycharm中开发vue的方法步骤
Mar 04 #Javascript
Vue+Vuex实现自动登录的知识点详解
Mar 04 #Javascript
vuex入门最详细整理
Mar 04 #Javascript
JavaScript 严格模式(use strict)用法实例分析
Mar 04 #Javascript
vue 自定义组件的写法与用法详解
Mar 04 #Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
Mar 04 #Javascript
You might like
PHP学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
PHP实现的封装验证码类详解
2013/06/18 PHP
php使用ereg验证文件上传的方法
2014/12/16 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
js控制框架刷新
2008/08/01 Javascript
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
js中parseInt函数浅谈
2013/07/31 Javascript
基于JavaScript实现弹出框效果
2016/02/19 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
懒加载实现的分页&&网站footer自适应
2016/12/21 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
浅谈箭头函数写法在ReactJs中的使用
2017/08/22 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
详解Vue之事件处理
2020/07/10 Javascript
JavaScript 事件代理需要注意的地方
2020/09/08 Javascript
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
[01:06:18]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第二场 1月26日
2021/03/11 DOTA
如何将python中的List转化成dictionary
2016/08/15 Python
Python中文编码知识点
2019/02/18 Python
python3+PyQt5 数据库编程--增删改实例
2019/06/17 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
2019/08/12 Python
python内存管理机制原理详解
2019/08/12 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
h5页面唤起app如果没安装就跳转下载(iOS和Android)
2020/06/03 HTML / CSS
中科方德软件测试面试题
2016/04/21 面试题
违反交通法规检讨书
2014/09/10 职场文书
2014年房地产工作总结范文
2014/11/19 职场文书
2014年控辍保学工作总结
2014/12/08 职场文书
高考作弊检讨书1500字
2015/02/16 职场文书
安全教育主题班会总结
2015/08/14 职场文书
2016年度先进班组事迹材料
2016/03/01 职场文书
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python
Linux中文件的基本属性介绍
2022/06/01 Servers