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


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中的on方法使用介绍
Dec 29 Javascript
javascript中加号(+)操作符的一些神奇作用
Jun 06 Javascript
vue2.0实现导航菜单切换效果
May 08 Javascript
AngularJS表单验证功能
Oct 19 Javascript
深入浅析Vue中的Prop
Jun 10 Javascript
基于Vue实现微信小程序的图文编辑器
Jul 25 Javascript
JS集合set类的实现与使用方法示例
Feb 01 Javascript
抖音上用记事本编写爱心小程序教程
Apr 17 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
Nov 01 Javascript
vue transition 在子组件中失效的解决
Nov 12 Javascript
详解JS函数防抖
Jun 05 Javascript
JavaScript实现点击出现子菜单效果
Feb 08 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 Socket 编程模拟Http post和get请求
2014/11/25 PHP
java模拟PHP的pack和unpack类
2016/04/13 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
网页自动刷新,不产生嗒嗒声的一个解决方法
2007/03/27 Javascript
找到了一篇jQuery与Prototype并存的冲突的解决方法
2007/08/29 Javascript
jQuery 浮动广告实现代码
2008/12/25 Javascript
JQuery伸缩导航练习示例
2013/11/13 Javascript
javascript字符串替换及字符串分割示例代码
2013/12/12 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
2015/09/05 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
Bootstrap table的使用方法
2016/11/02 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
2016/12/13 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
2017/10/14 jQuery
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
Bootstrap Table 双击、单击行获取该行及全表内容
2018/08/31 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
vue实现div单选多选功能
2020/07/16 Javascript
基于python log取对数详解
2018/06/08 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
python yield和Generator函数用法详解
2020/02/10 Python
Keras使用tensorboard显示训练过程的实例
2020/02/15 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
德国最大的服装、鞋子和配件在线商店之一:Outfits24
2019/07/23 全球购物
南京迈特望C/C++面试题
2012/07/09 面试题
小学毕业感言50字
2014/02/16 职场文书
珍惜资源的建议书
2014/08/26 职场文书
python中requests库+xpath+lxml简单使用
2021/04/29 Python
【海涛教你打DOTA】虚空假面第一视角骨弓3房29杀
2022/04/01 DOTA
解决flex布局中子项目尺寸不受flex-shrink限制
2022/05/11 HTML / CSS