使用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 相关文章推荐
网页布局中CSS样式无效的十个重要原因详解
Aug 10 HTML / CSS
纯css3实现的竖形无限级导航
Dec 10 HTML / CSS
使用CSS3和Checkbox实现JQuery的一些效果
Aug 03 HTML / CSS
CSS3 flex布局之快速实现BorderLayout布局
Dec 03 HTML / CSS
CSS3实现千变万化的文字阴影text-shadow效果设计
Apr 26 HTML / CSS
CSS3制作漂亮的照片墙的实现代码
Jun 08 HTML / CSS
css3实现小箭头各种图形效果
Jul 08 HTML / CSS
使用html2canvas.js实现页面截图并显示或上传的示例代码
Dec 18 HTML / CSS
canvas简单连线动画的实现代码
Feb 04 HTML / CSS
canvas 基础之图像处理的使用
Apr 10 HTML / CSS
解决flex布局中子项目尺寸不受flex-shrink限制
May 11 HTML / CSS
HTML 里 img 元素的 src 和 srcset 属性的区别详解
May 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
用PHP进行MySQL删除记录操作代码
2008/06/07 PHP
PHP使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
js登录弹出层特效
2014/03/07 Javascript
利用jQuery实现可以编辑的表格
2014/05/26 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
jQuery基于ajax实现带动画效果无刷新柱状图投票代码
2015/08/10 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
angularjs中使用ng-bind-html和ng-include的实例
2017/04/28 Javascript
vue todo-list组件发布到npm上的方法
2018/04/04 Javascript
Vue 组件传值几种常用方法【总结】
2018/05/28 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
微信小程序实现图片选择并预览功能
2019/07/25 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
python 爬虫出现403禁止访问错误详解
2017/03/11 Python
Python正则表达式知识汇总
2017/09/22 Python
python高阶爬虫实战分析
2018/07/29 Python
Python切图九宫格的实现方法
2019/10/10 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
2020/09/26 Python
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
澳大利亚最受欢迎的美发和美容在线商店:Catwalk
2018/12/12 全球购物
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
C#的几个面试问题
2016/05/22 面试题
介绍一下UNIX启动过程
2013/11/14 面试题
敬老院活动总结
2014/04/28 职场文书
大学新生入学教育方案
2014/05/16 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
活动总结报告怎么写
2014/07/03 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
小学班主任培训心得体会
2016/01/07 职场文书
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python
手把手教你导入Go语言第三方库
2021/08/04 Golang