前言:
之前做移动端开发app,前端无论用的是framework7还是vux或者是自己写,都会碰到了一个问题,就是点安卓手机的物理返回键返回的不是我程序的上一级,而是操作的上一级界面,举个例子:
我从A界面跳转到B界面,再从B界面跳转到下一级C界面,然后我点界面上的返回键会正常返回跳转到B界面,此时我要是点物理返回键就会又跳转到C界面,so,这是个坑,而且至今没找到什么好的解决办法,监听不到安卓物理键的返回,找了个折中的办法,用Cordova卡住物理返回键,做成点击一次提示继续点击退出程序,点击两次直接退出程序的样式,坑还是没有爬完,大神们有什么好的建议欢迎留言,跪谢~
直接上代码:
<script src="cordova.js"></script> <script type="text/javascript" charset="utf-8"> // Wait for device API libraries to load // function onLoad() { document.addEventListener("deviceready", onDeviceReady, false); } document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { //navigator.splashscreen.hide(); document.addEventListener("backbutton", onBackKeyDown, false); } function onBackKeyDown() { window.plugins.toast.showLongCenter(‘再按一次退出‘, function(a){console.log(‘toast success: ‘ + a)}, function(b){alert(‘toast error: ‘ + b)}) document.removeEventListener("backbutton", onBackKeyDown, false); // 注销返回键 document.addEventListener("backbutton", exitApp, false);//绑定退出事件 // 3秒后重新注册 var intervalID = window.setInterval(function() { window.clearInterval(intervalID); document.removeEventListener("backbutton", exitApp, false); // 注销返回键 document.addEventListener("backbutton", onBackKeyDown, false); // 返回键 }, 3000); } function exitApp(){ navigator.app.exitApp(); } </script>
注意:
需要在cordova上安装TOAST插件:
cordova plugin add cordova-plugin-x-toast