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


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 相关文章推荐
js注意img图片的onerror事件的分析
Jan 01 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
Mar 14 Javascript
Jquery 自定义动画概述及示例
Mar 29 Javascript
javascript的内存管理详解
Aug 07 Javascript
获取鼠标在div中的相对位置的实现代码
Dec 30 Javascript
原生JS实现响应式瀑布流布局
Apr 02 Javascript
跟我学习javascript的函数调用和构造函数调用
Nov 16 Javascript
JavaScript的ExtJS框架中表格的编写教程
May 21 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
Sep 11 Javascript
javascript实现鼠标点击生成文字特效
Dec 24 Javascript
基于原生js实现九宫格算法代码实例
Jul 03 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
Jul 26 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
基于文本的访客签到簿
2006/10/09 PHP
PHP程序员编程注意事项
2008/04/10 PHP
php 方便水印和缩略图的图形类
2009/05/21 PHP
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
微信公众平台开发实现2048游戏的方法
2015/04/15 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
2011/06/27 Javascript
jQuery中delegate和on的用法与区别详细解析
2014/01/26 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
JS控制按钮10秒钟后可用的方法
2015/12/22 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
webpack中引用jquery的简单实现
2016/06/08 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
Vue组件BootPage实现简单的分页功能
2016/09/12 Javascript
jQuery使用正则表达式替换dom元素标签用法示例
2017/01/16 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
微信小程序判断页面是否从其他页面返回的实例代码
2019/07/03 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
原生js生成图片验证码
2020/10/11 Javascript
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
python3大文件解压和基本操作
2017/12/15 Python
浅析python中numpy包中的argsort函数的使用
2018/08/30 Python
python字符串替换第一个字符串的方法
2019/06/26 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
四个太阳教学反思
2014/02/01 职场文书
中专生自我鉴定范文
2014/02/02 职场文书
与美同行演讲稿
2014/09/13 职场文书
2014年党员自我评价材料
2014/09/22 职场文书
个人授权委托书范本格式
2014/10/12 职场文书