使用h5新特性,轻松监听任何App自带返回键

简介:

1、前言

如今h5新特性、新标签、新规范等有很多,而且正在不断完善中,各大浏览器商对它们的支持,也是相当给力。作为前端程序员,我觉得我们还是有必要积极关注并勇敢地加以实践。接下来我将和各位分享一个特别好用的h5新特性(目前也不是特别新),轻松监听任何App自带的返回键,包括安卓机里的物理返回键,从而实现项目开发中进一步的需求。

2、起因

大概半年前接到pm一需求,用纯h5实现多audio的播放、暂停、续播,页面放至驾考宝典App中,与客户端没有任何的交互,所以与客户端相关的js不需要引用。看上去这需求挺简单的嘛,虽然之前也没做过类似的需求。不管三七二十一,挽起袖子就是干。开始了学习之旅。

3、我这里着重介绍下我具体是怎么监听任何App自带的返回键,以及安卓机里的物理返回键。

那为什么我要去监听呢,这里我有必要强调强调再强调。苹果手机不管是微信、QQ、App,还是浏览器里,涉及到audio、video,返回上一页系统会自动暂停当前的播放的,但不是所有安卓机都可以。所以我们自己必须自定义监听。很多朋友可能第一想法就是百度,然后出来的答案无非是这样

 
 
  1. pushHistory();

  2. window.addEventListener("popstate", function(e) {

  3.    alert("我监听到了浏览器的返回按钮事件啦");//根据自己的需求实现自己的功能

  4. }, false);

  5. function pushHistory() {

  6.    var state = {

  7.        title: "title",

  8.        url: "#"

  9.    };

  10.    window.history.pushState(state, "title", "#");

  11. }

是不是很眼熟?然而关键需求不能完美实现,要这段代码有何用,当时我也是绞尽脑汁。直到经过大神好友指导,复制了这段代码

 
 
  1. var hiddenProperty = 'hidden' in document ? 'hidden' :    

  2.    'webkitHidden' in document ? 'webkitHidden' :    

  3.    'mozHidden' in document ? 'mozHidden' :    

  4.    null;

  5. var visibilityChangeEvent = hiddenProperty.replace(/hidden/i, 'visibilitychange');

  6. var onVisibilityChange = function(){

  7.    if (!document[hiddenProperty]) {    

  8.        console.log('页面非激活');

  9.    }else{

  10.        console.log('页面激活')

  11.    }

  12. }

  13. document.addEventListener(visibilityChangeEvent, onVisibilityChange);

所有问题迎刃而解。 这段代码的原理我个人理解就是通过判断用户浏览的是否为当前页,从而进行相关操作。 这是 MDN相关链接:https://developer.mozilla.org/zh-CN/docs/Web/API/Document/hidden

并不是说真的可以通过JS监听到App里的自带返回键,甚至安卓的物理返回键,而是通过转变思路,快速实现需求。希望这个特性能帮到各位。


END

本文作者:JavaScript_w
本文发布时间:2018年03月14日
本文来自云栖社区合作伙伴 CSDN,了解相关信息可以关注csdn.net网站。
目录
相关文章
|
4月前
|
Web App开发 移动开发 小程序
"项目中mpaas升级到10.2.3 适配Android 14之后 app中的H5以及小程序都访问不了,
"项目中mpaas升级到10.2.3 适配Android 14之后 app中的H5以及小程序都访问不了,显示“网络不给力,请稍后再试”,预发内网版本不能使用,线上版本可以正常使用,这个是什么原因啊,是某些参数没有配置吗,还是说是一些参数改错了?
56 2
|
4月前
|
移动开发
钉钉H5微应用配置IP,应用首页地址报错:app url exceeds max length limit,这个怎么处理?
钉钉H5微应用配置IP,应用首页地址报错:app url exceeds max length limit,这个怎么处理?
272 0
|
3月前
|
移动开发 小程序 JavaScript
Uniapp 中,能够同时兼容H5、web、app、微信小程序的引入高德地图的语法格式
Uniapp 中,能够同时兼容H5、web、app、微信小程序的引入高德地图的语法格式
|
1月前
|
移动开发 负载均衡 小程序
代驾app开发丨代驾系统开发玩法详情丨代驾系统开发网页版/H5/小程序及源码部署
**司机/代驾员端**:司机可以通过APP接收订单,查看订单详情、路线和导航,提供现场服务并进行确认。
|
1月前
uni-app 78渲染和监听聊天会话列表
uni-app 78渲染和监听聊天会话列表
16 1
|
3月前
|
移动开发 小程序 UED
科普:App、H5和小程序是什么?
科普:App、H5和小程序是什么?
38 0
|
3月前
|
移动开发 前端开发 开发工具
智慧校园信息化H5端App的软件开发设计文档
智慧校园信息化H5端App的软件开发设计文档
49 0
|
4月前
|
移动开发 开发框架 小程序
uni-app的优缺点;uniapp进行条件编译的两种方法;小程序端和H5的代表值
uni-app的优缺点;uniapp进行条件编译的两种方法;小程序端和H5的代表值
64 0
|
4月前
|
移动开发 小程序
微信小程序web-view嵌入uni-app H5页面,通过H5页面传参给小程序进行转发分享页面,并通过点击转发出来的卡片,定向打开对应H5路径
微信小程序web-view嵌入uni-app H5页面,通过H5页面传参给小程序进行转发分享页面,并通过点击转发出来的卡片,定向打开对应H5路径
|
4月前
|
移动开发 JavaScript
Vant简单H5 web app【小试牛刀】
Vant简单H5 web app【小试牛刀】