使用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 相关文章推荐
HTML+CSS3 模仿Windows7 桌面效果
Jun 17 HTML / CSS
CSS3新属性transition-property transform box-shadow实例学习
Jun 06 HTML / CSS
css3+jq创作含苞待放的荷花
Feb 20 HTML / CSS
CSS3 实现童年的纸飞机
May 05 HTML / CSS
CSS3实现红包抖动效果
Dec 23 HTML / CSS
html5自带表单验证体验优化及提示气泡修改功能
Sep 12 HTML / CSS
HTML5 本地存储实现购物车功能
Sep 07 HTML / CSS
HTML5 canvas画矩形时出现边框样式不一致的解决方法
Oct 14 HTML / CSS
html5+css3气泡组件的实现
Nov 21 HTML / CSS
使用html5 canvas 画时钟代码实例分享
Nov 11 HTML / CSS
小程序canvas中文字设置居中锚点
Apr 16 HTML / CSS
如何给HTML标签中的文本设置修饰线
Nov 18 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
PHP 使用header函数设置HTTP头的示例解析 表头
2013/06/17 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
php实现水仙花数示例分享
2014/04/03 PHP
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
jquery 元素相对定位代码
2010/10/15 Javascript
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
简单实现js选项卡切换效果
2016/02/03 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
2016/12/14 Javascript
Bootstrap模态框使用详解
2017/02/15 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
JS抛物线动画实例制作
2018/02/24 Javascript
React之PureComponent的使用作用
2018/07/10 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
详解react组件通讯方式(多种)
2020/05/06 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
jquery实现异步文件上传ajaxfileupload.js
2020/10/23 jQuery
Python实现根据IP地址和子网掩码算出网段的方法
2015/07/30 Python
Django自定义用户认证示例详解
2018/03/14 Python
python3中os.path模块下常用的用法总结【推荐】
2018/09/16 Python
浅谈python中统计计数的几种方法和Counter详解
2019/11/07 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
工商管理毕业生推荐信
2013/12/24 职场文书
电大毕业自我鉴定
2014/02/03 职场文书
生活小常识广播稿
2014/09/16 职场文书
2015年党务工作者个人工作总结
2015/10/22 职场文书
关于艺术节的开幕致辞
2016/03/04 职场文书
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS