使用html5新特性轻松监听任何App自带返回键的示例


Posted in HTML / CSS onMarch 13, 2018

1、前言

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

2、起因

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

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

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

pushHistory(); 
window.addEventListener("popstate", function(e) { 
    alert("我监听到了浏览器的返回按钮事件啦");//根据自己的需求实现自己的功能 
}, false); 
function pushHistory() { 
    var state = { 
        title: "title", 
        url: "#"
    }; 
    window.history.pushState(state, "title", "#"); 
}

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

var hiddenProperty = 'hidden' in document ? 'hidden' :    
    'webkitHidden' in document ? 'webkitHidden' :    
    'mozHidden' in document ? 'mozHidden' :    
    null;
var visibilityChangeEvent = hiddenProperty.replace(/hidden/i, 'visibilitychange');
var onVisibilityChange = function(){
    if (!document[hiddenProperty]) {    
        console.log('页面非激活');
    }else{
        console.log('页面激活')
    }
}
document.addEventListener(visibilityChangeEvent, onVisibilityChange);

所有问题迎刃而解。

这段代码的原理我个人理解就是通过判断用户浏览的是否为当前页,从而进行相关操作。

这是 MDN相关链接:https://developer.mozilla.org/zh-CN/docs/Web/API/Document/hidden

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
使用CSS3来实现滚动视差效果的教程
Aug 24 HTML / CSS
详解CSS3中的box-sizing(content-box与border-box)
Apr 19 HTML / CSS
HTML5 本地存储实现购物车功能
Sep 07 HTML / CSS
Html5剪切板功能的实现代码
Jun 29 HTML / CSS
用HTML5实现手机摇一摇的功能的教程
Oct 30 HTML / CSS
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
Jan 31 HTML / CSS
HTML5标签使用方法详解
Nov 27 HTML / CSS
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
Sep 19 HTML / CSS
html2 canvas生成清晰的图片实现打印功能
Sep 23 HTML / CSS
HTML5页面无缝闪开的问题及解决方案
Jun 11 HTML / CSS
AmazeUI 面板的实现示例
Aug 17 HTML / CSS
基于CSS3画一个iPhone
Apr 21 HTML / CSS
配置H5的滚动条样式的示例代码
Mar 09 #HTML / CSS
Canvas制作旋转的太极的示例
Mar 09 #HTML / CSS
详解px单位html5响应式方案
Mar 08 #HTML / CSS
html5开发三八女王节表白神器
Mar 07 #HTML / CSS
使用HTML5和CSS3制作一个模态框的示例
Mar 07 #HTML / CSS
Canvas制作的下雨动画的示例
Mar 06 #HTML / CSS
html2canvas把div保存图片高清图的方法示例
Mar 05 #HTML / CSS
You might like
CI框架给视图添加动态数据
2014/12/01 PHP
php5.3不能连接mssql数据库的解决方法
2014/12/27 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
List Installed Hot Fixes
2007/06/12 Javascript
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
Javascript 学习笔记 错误处理
2009/07/30 Javascript
浅谈Javascript面向对象编程
2011/11/15 Javascript
JavaScript中的null和undefined解析
2012/04/14 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
2018/01/25 jQuery
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
在weex中愉快的使用scss的方法步骤
2020/01/02 Javascript
Python实现的百度站长自动URL提交小工具
2014/06/27 Python
matplotlib 纵坐标轴显示数据值的实例
2018/05/25 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
python存储16bit和32bit图像的实例
2018/12/05 Python
Python第三方库h5py_读取mat文件并显示值的方法
2019/02/08 Python
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
精灵市场:Pixie Market
2019/06/18 全球购物
学生个人求职自荐信格式
2013/09/23 职场文书
教师队伍管理制度
2014/01/14 职场文书
项目总经理岗位职责
2014/02/14 职场文书
2014全国两会心得体会
2014/03/17 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
亲子活动总结
2014/04/26 职场文书
节水口号标语
2014/06/19 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
2014年小学生教师节演讲稿范文
2014/09/10 职场文书
2014年妇幼保健工作总结
2014/12/08 职场文书
村官2015年度工作总结
2015/10/14 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书