从网页监听Android设备的返回键
来源:互联网 发布:java就是业务逻辑吗 编辑:程序博客网 时间:2024/05/23 01:15
最近搞Android项目的时候,遇到一个比较蛋疼的需求,需要从Client App调用系统浏览器打开一个页面,进行杂七杂八的一些交互之后,返回到App。如何打开浏览器和如何返回App这里就不说了,有兴趣的童鞋可私下交流。
之所以说这个需求蛋疼,是因为Android有个物理返回键啊……返回键啊……键啊……啊……
用户按下返回键后,预期应该跟点击页面上的返回键一样——返回App。然而这个返回键的被按下的时候网页完全不知道啊(onbeforeunload不算),找不到直接的办法去监听,愁死我们这全苦逼程序员鸟~
虽然啊不能直接监听,曲线救国的办法,还是有滴。
经过艰苦卓绝的寻找,发现使用HTML5的History可以稍微模拟到返回键的按下事件。原理如下:
- 页面加载完成时,调用history.pushState写入一个指定状态STATE,并监听window.onpopstate;
- 当onpopstate被触发时,检查event.state是否等于STATE,如果相等,表示页面发生了后退(按下返回键或者浏览器的后退按钮),则把这次行为当作是返回键被按下了(把点击浏览器的后退按钮也误算进来了,不过没啥好法子了呀)。
嗯,为了方便调用,把这个逻辑稍微封装了下,代码见这里(https://github.com/iazrael/xback),使用方法如下:
XBack.listen(function(){ alert('oh! you press the back button');});XBack.listen(function(){ alert('ah, press press press');});
不过这个方法有些缺陷:
- 如果项目本身使用了pushState,则历史记录会有瑕疵(多了一个历史);
- 浏览器的后退按钮点击以及调用history.back()也会被当成按下了返回键。
But anyway,对于结构和逻辑比较简单的跳转页来说(就是为了返回App用的),这个方法还是蛮实用的,对不对?嘻嘻~
本文出自:http://www.alloyteam.com, 原文地址:http://www.alloyteam.com/2013/02/back-key-monitor-android-devices-from-the-web/, 感谢原作者分享。
0 0
- 从网页监听Android设备的返回键
- 从网页监听Android设备的返回键
- Android设备Home、Menu和Back返回键的监听
- Android开发监听返回键返回上个网页或者fragment
- 【android进阶】Fragment内放置WebView,监听返回键,并返回之前打开的网页
- Android返回键的监听
- android 返回键的监听
- android返回键的监听
- android监听返回键
- Android监听返回键
- android 返回键监听
- android 监听返回键
- Android 返回键的监听及处理
- android中返回键的监听
- Android 返回键取消dialog的监听
- Android返回键的监听汇总
- Android监听实体返回键的触发
- 返回键的监听
- 硬实时Linux(RT-Preempt Patch)在PC上的编译、使用和测试
- Ubuntu中Nginx的安装与配置
- java代码规范
- ios 发布iOS应用(xcode5)到App Store(苹果商店) 详细解析
- 如何根据传感器实时采集的数据计算出前进后退侧移下蹲等动作,并且能够估算出速度,算法
- 从网页监听Android设备的返回键
- Essential Linux Device Driver附录A . Linux汇编
- github Android 控件
- AS3页面传参
- 基于双链表 + hashtable实现的LRU算法
- 第13周项目1--数组大折腾2
- Essential Linux Device Drivers》中文版第2章
- Java发送email 带附件
- 单机用户下修改root密码及grub加密