js控制android原生返回按钮

js是无法直接监听物理返回键的,但是我们可以用HTML5的 History 新 API pushState 来曲线监听 Android 设备的返回按钮

原理:

在页面加载后往历史记录写入一个 state, 并监听 popstate 事件, 如果返回按钮被按下, 则会触发 popstate, 比对到触发的 state 跟写入的一致, 则认为返回按钮被按下了.

Example:
页面引入xback.js后, 使用下面的方法监听返回按钮事件, 支持多方法绑定
XBack.listen(function(){
	alert('oh! you press the back button');
});
xback.js
/*使用HTML5的history新API pushState来曲线监听Android设备的返回按钮
/*增加个分号,防止压缩时出错
;!function(pkg,undefined){
var STATE =  'x-back';
var element;
var onPopState = function(event){
event.state === STATE && fire();
}
var record = function(state){
history.pushState(state,null,location.href);
}
var fire = function(){
var event = document.createEvent('Evenets');
event.initEvent(STATE,false,false);
element.dispatchEvent(event);
}
var listen = function(listener){
element.addEventListener(STATE,listener,false);
}
;!function(){
element = document.createElement('span');
window.addEventListener('popstate',onPopState);
this.listen = listen;
record(STATE);
}.call(window[pkg] = window[pkg] || {});

}.('XBack');




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值