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


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 页面内容搜索,类似于 Ctrl+F功能的实现代码
Aug 13 Javascript
Google AJAX 搜索 API实现代码
Nov 17 Javascript
原生javascript和jquery判断浏览器版本等信息
Jul 04 Javascript
JS中把字符转成ASCII值的函数示例代码
Nov 21 Javascript
jquery实现简单合拢与展开网页面板的方法
Sep 01 Javascript
理解js回收机制通俗易懂版
Feb 29 Javascript
AngularJS基础 ng-class-odd 指令示例
Aug 01 Javascript
一个简易的js图片轮播效果
Jul 22 Javascript
移动端吸顶fixbar的解决方案详解
Jul 17 Javascript
vue + elementUI实现省市县三级联动的方法示例
Oct 29 Javascript
javascript实现支付宝滑块验证码效果
Jul 24 Javascript
使用vue构建多页面应用的示例
Oct 22 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实现像JSP,ASP里Application那样的全局变量
2007/01/12 PHP
用php实现的下载css文件中的图片的代码
2010/02/08 PHP
php HandlerSocket的使用
2011/05/02 PHP
PHP安全防范技巧分享
2011/11/03 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
2014/06/30 PHP
JQuery在页面中添加和除移DOM示例代码
2013/06/24 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
jQuery插件datatables使用教程
2016/04/21 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
VueJs组件prop验证简单介绍
2017/09/12 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
Python读取图片EXIF信息类库介绍和使用实例
2014/07/10 Python
python插入数据到列表的方法
2015/04/30 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
2020/10/19 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
python自动生成sql语句的脚本
2021/02/24 Python
Nike荷兰官方网站:Nike.com (NL)
2018/04/19 全球购物
护理自荐信范文
2013/10/05 职场文书
安全标准化汇报材料
2014/02/03 职场文书
办公室文员岗位职责范本
2014/06/12 职场文书
机械专业求职信范文
2014/07/15 职场文书
中国梦演讲稿3分钟
2014/08/19 职场文书
公司授权委托书范文
2014/09/21 职场文书
学习保证书100字
2015/02/26 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
JavaScript实现外溢动态爱心的效果的示例代码
2022/03/21 Javascript
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL
python开发人人对战的五子棋小游戏
2022/05/02 Python