使用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绘制百度的小度熊
Oct 29 HTML / CSS
CSS3动画之利用requestAnimationFrame触发重新播放功能
Sep 11 HTML / CSS
CSS3 开发工具收集
Apr 17 HTML / CSS
CSS3 3D旋转rotate效果实例介绍
May 03 HTML / CSS
使用HTML5捕捉音频与视频信息概述及实例
Aug 22 HTML / CSS
html5 touch事件实现页面上下滑动效果【附代码】
Mar 10 HTML / CSS
基于HTML5 Canvas 实现商场监控实例详解
Nov 20 HTML / CSS
canvas学习笔记之绘制简单路径
Jan 28 HTML / CSS
HTML5+JS实现俄罗斯方块原理及具体步骤
Nov 29 HTML / CSS
HTML5之tabindex属性全面解析
Jul 07 HTML / CSS
详解html5 canvas常用api总结(二)--绘图API
Dec 14 HTML / CSS
canvas实现图片镜像翻转的2种方式
Jul 22 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
初学者入门:细述PHP4的核心Zend
2006/09/05 PHP
openflashchart 2.0 简单案例php版
2012/05/21 PHP
php常用数学函数汇总
2014/11/21 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
2016/09/30 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
PHP文件操作简单介绍及函数汇总
2020/12/11 PHP
一个小型js框架myJSFrame附API使用帮助
2008/06/28 Javascript
跨域传值即主页面与iframe之间互相传值
2013/12/09 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
JS实现太极旋转思路分析
2016/12/09 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
基于jquery的on和click的区别详解
2018/01/15 jQuery
vue的安装及element组件的安装方法
2018/03/09 Javascript
解决vue-cli创建项目的loader问题
2018/03/13 Javascript
微信小程序如何使用云开发
2019/05/17 Javascript
echarts多条折线图动态分层的实现方法
2019/05/24 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
Vue绑定用户接口实现代码示例
2020/11/04 Javascript
Python strip lstrip rstrip使用方法
2008/09/06 Python
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
解决Django模板无法使用perms变量问题的方法
2017/09/10 Python
pytorch numpy list类型之间的相互转换实例
2019/08/18 Python
python+mysql实现个人论文管理系统
2019/10/25 Python
tornado+celery的简单使用详解
2019/12/21 Python
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
小学后勤管理制度
2014/01/14 职场文书
明信片寄语大全
2014/04/08 职场文书
课内比教学心得体会
2014/09/09 职场文书
民主评议党员个人总结
2015/02/13 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
Python测试框架pytest高阶用法全面详解
2022/06/01 Python
基于Python编写一个监控CPU的应用系统
2022/06/25 Python
mysql查看表结构的三种方法总结
2022/07/07 MySQL