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


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 相关文章推荐
javascript Array.remove() 数组删除
Aug 06 Javascript
jQuery 1.4 15个你应该知道的新特性(译)
Jan 24 Javascript
js弹出窗口之弹出层的小例子
Jun 17 Javascript
js获取下拉列表的值和元素个数示例
May 07 Javascript
javascript常用经典算法详解
Jan 11 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
Feb 26 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
Jul 13 Javascript
vue父组件向子组件动态传值的两种方法
Nov 11 Javascript
利用vue和element-ui设置表格内容分页的实例
Mar 02 Javascript
[原创]jquery判断元素内容是否为空的方法
May 04 jQuery
微信小程序实现获取准确的腾讯定位地址功能示例
Mar 27 Javascript
Vue 中可以定义组件模版的几种方式
Aug 06 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
CI框架常用方法小结
2016/05/17 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
javascript delete 使用示例代码
2010/03/29 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
JavaScript位移运算符(无符号) >>> 三个大于号 的使用方法详解
2016/03/31 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
2016/11/23 Javascript
js实现的在线调色板功能完整实例
2016/12/21 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
Vue.js watch监视属性知识点总结
2019/11/11 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
2021/02/15 Javascript
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
解决Pandas的DataFrame输出截断和省略的问题
2019/02/08 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
python实现小世界网络生成
2019/11/21 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
快速了解Python开发环境Spyder
2020/06/29 Python
python3获取控制台输入的数据的具体实例
2020/08/16 Python
python里glob模块知识点总结
2021/01/05 Python
CSS3区域模块region相关编写示例
2015/08/28 HTML / CSS
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
2017/07/11 HTML / CSS
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
药学专业学生的自我评价分享
2014/02/06 职场文书
团支部建设方案
2014/05/02 职场文书
2014年团队工作总结
2014/11/24 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
vue实现简单数据双向绑定
2021/04/28 Vue.js
python学习之panda数据分析核心支持库
2021/05/07 Python
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏
python turtle绘图
2022/05/04 Python