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


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 相关文章推荐
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
Feb 04 Javascript
Javascript无阻塞加载具体方式
Jun 28 Javascript
jquery实现更改表格行顺序示例
Apr 30 Javascript
director.js实现前端路由使用实例
Feb 03 Javascript
js style.display=block显示布局错乱问题的解决方法
Sep 21 Javascript
js学习之----深入理解闭包
Nov 21 Javascript
纯js实现悬浮按钮组件
Dec 17 Javascript
vue组件实践之可搜索下拉框功能
Nov 25 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
May 23 Javascript
Vue 3.x+axios跨域方案的踩坑指南
Jul 04 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
Oct 16 jQuery
js闭包的9个使用场景
Dec 29 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
全国FM电台频率大全 - 31 新疆维吾尔族自治区
2020/03/11 无线电
一个PHP+MSSQL分页的例子
2006/10/09 PHP
PHP数据缓存技术
2007/02/14 PHP
php封装的smartyBC类完整实例
2016/10/19 PHP
php实现用户登陆简单实例
2017/04/04 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
2017/08/02 PHP
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
2014/10/16 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
2015/09/14 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
2017/07/14 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
bootstrap3中container与container_fluid外层容器的区别讲解
2017/12/04 Javascript
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
微信小程序之左右布局的实现代码
2019/12/13 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
[03:37]2015国际邀请赛第四日现场精彩集锦
2015/08/08 DOTA
教你用python3根据关键词爬取百度百科的内容
2016/08/18 Python
Python中的__slots__示例详解
2017/07/06 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
使用django实现一个代码发布系统
2019/07/18 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
中专毕业生自荐信
2013/11/16 职场文书
校园餐饮创业计划书
2014/01/10 职场文书
秋季运动会活动方案
2014/02/05 职场文书
物流管理系毕业生求职信
2014/06/03 职场文书
2014老师三严三实对照检查材料思想汇报
2014/09/18 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
灵能百分百第三季什么时候来?
2022/03/15 日漫