在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回、后退、上一页等按钮实现自己的关闭页面、调整到指定页面或执行一些其它操作的

需求,那在代码中怎样监听当点击微信、支付宝、百度糯米、百度钱包等app的返回按钮或者浏览器的上一页或后退按钮的事件呢。

首先我们要了解浏览器的history。大家知道在页面中我们可以使用JavaScript window history,后退到前面页面,但是由于安全原因javascript不允许修改

history里已有的url链接,但可以使用pushState方法往history里增加url链接,并且提供popstate事件监测从history栈里弹出url。既然有提供popstate事件

监测,那么我们就可以进行监听。

返回、后退、上一页按钮点击监听实现代码:

1 window.addEventListener("popstate", function(e) {
2         alert("我监听到了浏览器的返回按钮事件啦");//根据自己的需求实现自己的功能
3 }, false);  

虽然我们监听到了后退事件,但是页面还是会返回上一个页面,所以我们需要使用pushState增加一个本页的url,代表本页,大家都非常清楚是#

1 function pushHistory() {
2         var state = {
3             title: "title",
4             url: "#"
5         };
6         window.history.pushState(state, "title", "#");
7 }  

当进入该页面,我们就给这个history压入一个本地的连接。当点击返回、后退及上一页的操作时,就进行监听,在监听代码中实现自己操作。

下面是完整的代码:

 1 $(function(){
 2     pushHistory();
 3     window.addEventListener("popstate", function(e) {
 4         alert("我监听到了浏览器的返回按钮事件啦");//根据自己的需求实现自己的功能
 5 }, false);
 6     function pushHistory() {
 7         var state = {
 8             title: "title",
 9             url: "#"
10         };
11         window.history.pushState(state, "title", "#");
12     }
13
14 });  

在微信中进入页面就触发了popstate事件。

解决方法:定义boolean 变量bool=false。在页面加载后,采用setTimeout方法设置1.5s的超时,在超时执行方法中设置bool=true。

在popstate监听当中增加对bool的判断,当bool=true时,执行内容。具体代码如下:

 1 $(function(){
 2       pushHistory();
 3       var bool=false;
 4       setTimeout(function(){
 5            bool=true;
 6       },1500);
 7       window.addEventListener("popstate", function(e) {
 8            if(bool)
 9             {
10                alert("我监听到了浏览器的返回按钮事件啦");//根据自己的需求实现自己的功能
11             }
12             pushHistory();
13
14       }, false);
15 });  

转载于:https://www.cnblogs.com/exhuasted/p/7117247.html

监听当点击微信等app的返回按钮或者浏览器的上一页或后退按钮的事件相关推荐

  1. app消息推送及监听系统消息点击

    setTimeout(()=>{plus.push.createMessage("消息测试", "LocalMSG", {cover: true}); / ...

  2. 使用swipecard实现卡片视图左右滑动监听以及点击监听

    使用swipecard实现卡片视图左右滑动监听以及点击监听  前言: 大家好,今天给大家介绍安卓一种特别实用有很酷炫的组件swipecard,当然这并不是安卓爸爸创造的,这是国内的一个我认为是大牛的一 ...

  3. Android监听是否点击了home键或者锁屏键

    public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceSta ...

  4. maptalks常见操作——图层置顶置底、添加清空图层、添加标注、切换底图、添加缩放工具、事件监听(点击面出弹框)、右键菜单、绘制mark、锁定视角

    maptalks常见操作--图层置顶置底.添加清空图层.添加标注.切换底图.添加缩放工具.事件监听(点击面出弹框).右键菜单.绘制mark.锁定视角 1.图层置顶 置底 layer.show().br ...

  5. jquery 监听td点击事件_安卓开发监听点击事件的一种方法

    本人是菜鸟一只,学习安卓纯属兴趣.没有真正上过编程课程,所有知识都是在网上获取的.今天分享的是监听点击事件的一个方法,这个方法的好处是代码较简洁. 如图,点击保存时,把上面的数据入库. 实现如下: 在 ...

  6. 微信小程序监听服务器发送消息,微信小程序实时聊天WebSocket

    本文实例为大家分享了微信小程序实时聊天WebSocket的具体代码,供大家参考,具体内容如下 1.所有监听事件先在onload监听. // pages/index/to_news/to_news.js ...

  7. 监听UIWebView点击视频播放的事件

    最近项目需要统计在跳转UIWebView后,用户点击网页上的视频进行播放的概率.找了很多监听进入视频播放的方法,最后在stackoverflow找到下面这个使用Notification的可行方法(如果 ...

  8. touch事件总结,监听屏幕点击事件

    Touch对象--MDN TouchEvent--MDN 一.问题背景 click事件在移动端的300毫秒延迟问题 当需要监听诸如左滑.右滑之类的事件 二.知识点概括 1. 事件类型 touchsta ...

  9. html鼠标离开点击停留,Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)...

    本文实例总结了Javascript DOM事件操作.分享给大家供大家参考,具体如下: 使用JavaScript可以对HTML页面上的各种事件进行监听,如鼠标点击/释放,鼠标悬停/离开,等等. 效果图: ...

最新文章

  1. BZOJ 1040 骑士
  2. db2关闭下一句sql的日志_MySQL 用户和权限管理,日志体系简介
  3. Java 基本数据类型
  4. RDP(远程桌面)优化
  5. 【GPU精粹与Shader编程】(一) 全系列核心知识点总览
  6. 剑指offer 树的子结构
  7. java tcp 监听端口_【TCP/IP】端口未监听,还能访问成功?
  8. hive shell/sql 命令行
  9. c:forEach varStatus属性
  10. C语言宏定义中#define中的井号#的使用
  11. OpenShift 4 Tekton (2) - OpenShift Pipeline入门-用Pipeline部署应用
  12. 单选框加了css后显示不出来,layui radio 单选框 效果 显示不来 解决方法
  13. 阅读Google的C++代码规范有感
  14. 【题解】Atcoder ARC#76 F-Exhausted?
  15. 流程和企业成熟度模型(PEMM)
  16. 【数学建模】【lingo】lingo的基本操作
  17. 模板方法模式【Template Method Pattern 】
  18. 古筝数据matlab格式2
  19. 配置zsh的prompt
  20. Ubuntu14.04安装calamari

热门文章

  1. egg、node发送邮箱插件nodemailer
  2. 新闻发布系统类图_强化新闻宣传工作 提高舆论引导能力——攀枝花市应急管理局开展引导业务技能大比武活动...
  3. 离散数学实验二 实现任意集合上二元关系的性质判定
  4. 智能除味器--整体硬件方案概述
  5. 瀚高数据库DML自动转发功能介绍(数据库层面)
  6. 用python语言写了一套在线算命程序 ,精准度怎么样?可以来试试
  7. 十四、系统与环境函数
  8. 马特垃圾把自己钉在耻辱柱上
  9. CTF随笔——隐写术
  10. 【jsSDK】前端验证码SDK模块