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


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 相关文章推荐
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
Mar 10 Javascript
基于jQuery的实现简单的分页控件
Oct 10 Javascript
jquery ajax提交整个表单元素的快捷办法
Mar 27 Javascript
写得不错的jquery table鼠标经过变色代码
Sep 27 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
Jun 01 Javascript
谈谈jQuery之Deferred源码剖析
Dec 19 Javascript
详解基于vue的移动web app页面缓存解决方案
Aug 03 Javascript
javascript实现数字配对游戏的实例讲解
Dec 14 Javascript
TypeScript类型声明书写详解
Aug 28 Javascript
layui下拉列表select实现可输入查找的方法
Sep 28 Javascript
微信小程序canvas截取任意形状的实现代码
Jan 13 Javascript
微信小程序以ssm做后台开发的实现示例
Apr 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
在Windows中安装Apache2和PHP4的权威指南
2006/10/09 PHP
php 购物车完整实现代码
2014/06/05 PHP
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
用ASP将SQL搜索出来的内容导出为TXT的代码
2007/07/27 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
js输入框邮箱自动提示功能代码实现
2013/12/10 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
jQuery实现的表格前端排序功能示例
2017/09/18 jQuery
bootstrap table实现合并单元格效果
2018/12/24 Javascript
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
[03:09]显微镜下的DOTA2第一期——带你走进华丽的DOTA2世界
2014/06/20 DOTA
[50:22]完美盛典-2018年度红毯走秀
2018/12/16 DOTA
Flask框架的学习指南之开发环境搭建
2016/11/20 Python
python使用邻接矩阵构造图代码示例
2017/11/10 Python
详解python中的 is 操作符
2017/12/26 Python
在python shell中运行python文件的实现
2019/12/21 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
Marriott中国:万豪国际酒店查询预订
2016/09/02 全球购物
elf彩妆英国官网:e.l.f. Cosmetics英国(美国平价彩妆品牌)
2017/11/02 全球购物
AURALog面试题软件测试方面
2013/10/22 面试题
音乐专业应届生教师求职信
2013/11/04 职场文书
2014年作风建设工作总结
2014/10/29 职场文书
铣工实训报告
2014/11/05 职场文书
学生考试舞弊检讨书
2015/01/01 职场文书
JVM之方法返回地址详解
2022/02/28 Java/Android