使用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制作的鼠标悬停时边框旋转
Jan 03 HTML / CSS
纯css3实现宠物小鸡实例代码
Oct 08 HTML / CSS
CSS3只让背景图片旋转180度的实现示例
Mar 09 HTML / CSS
Html5剪切板功能的实现代码
Jun 29 HTML / CSS
Html5 web本地存储实例详解
Jul 28 HTML / CSS
浅析HTML5中的 History 模式
Jun 22 HTML / CSS
html5 figure和figcaption的使用方法
Sep 10 HTML / CSS
HTML5图片层叠的实现示例
Jul 07 HTML / CSS
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
Jul 16 HTML / CSS
CSS实现两列布局的N种方法
Aug 02 HTML / CSS
css实现左上角飘带效果的完整代码
Mar 18 HTML / CSS
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
Dec 24 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
smarty 原来也不过如此~~呵呵
2006/11/25 PHP
深入file_get_contents与curl函数的详解
2013/06/25 PHP
PHP中使用虚代理实现延迟加载技术
2014/11/05 PHP
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
2010/08/03 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
老生常谈JavaScript 正则表达式语法
2016/08/20 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
2017/03/13 Javascript
Vue项目中跨域问题解决方案
2018/06/05 Javascript
详解Nuxt.js中使用Element-UI填坑
2019/09/06 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
原生js+canvas实现验证码
2020/11/29 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
python cookielib 登录人人网的实现代码
2012/12/19 Python
python错误处理详解
2014/09/28 Python
python运行时间的几种方法
2016/06/17 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
图解Python变量与赋值
2018/04/03 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
Python包,__init__.py功能与用法分析
2020/01/07 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
Grow Gorgeous美国官网:只要八天,体验唤醒毛囊后新生的茂密秀发
2018/06/04 全球购物
合作意向书
2014/07/30 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
2014年国庆节寄语
2014/09/19 职场文书
QT与javascript交互数据的实现
2021/05/26 Javascript
Linux安装Docker详细教程
2022/07/07 Servers