使用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 transform 属性来变换背景图的方法
May 07 HTML / CSS
让IE6支持css3,让 IE7、IE8 都支持CSS3
Oct 09 HTML / CSS
纯CSS绘制漂亮的圆形图案效果
May 07 HTML / CSS
一款纯css3实现的响应式导航
Oct 31 HTML / CSS
总结30个CSS3选择器
Apr 13 HTML / CSS
css3 中translate和transition的使用方法
Mar 26 HTML / CSS
websocket+sockjs+stompjs详解及实例代码
Nov 30 HTML / CSS
字中字效果的实现【html5实例】
May 03 HTML / CSS
data:image data url 文件转为Blob上传后端的方法
Jul 16 HTML / CSS
手摸手教你用canvas实现给图片添加平铺水印的实现
Aug 20 HTML / CSS
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
May 25 HTML / CSS
css弧边选项卡的项目实践
May 07 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
层叠菜单的动态生成
2006/10/09 PHP
php中去除所有js,html,css代码
2010/10/12 PHP
PHP 下载文件时自动添加bom头的方法实例
2014/01/10 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
PHP使用星号隐藏用户名,手机和邮箱的实现方法
2016/09/22 PHP
[Web]防止用户复制页面内容和另存页面的方法
2009/02/06 Javascript
javascript 关闭IE6、IE7
2009/06/01 Javascript
Jquery之美中不足小结
2011/02/16 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
2014/03/12 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
举例讲解jQuery中可见性过滤选择器的使用
2016/04/18 Javascript
jQuery中$.ajax()方法参数解析
2016/10/22 Javascript
AngularJS自定义插件实现网站用户引导功能示例
2016/11/07 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
vue 粒子特效的示例代码
2017/09/19 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
分享ES6的7个实用技巧
2018/01/18 Javascript
vue的全局提示框组件实例代码
2018/02/26 Javascript
JS跨域请求的问题解析
2018/12/03 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
Python应用库大全总结
2018/05/30 Python
详解小白之KMP算法及python实现
2019/04/04 Python
python制作图片缩略图
2019/04/30 Python
pytorch进行上采样的种类实例
2020/02/18 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
Python爬虫教程之利用正则表达式匹配网页内容
2020/12/08 Python
web字体加载方案优化小结
2019/11/29 HTML / CSS
英国领先的豪华时尚家居网上商店:Amara
2019/08/12 全球购物
什么是数据抽象
2016/11/26 面试题
优秀班干部事迹材料
2014/01/26 职场文书
化工专业自荐书
2014/06/16 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python