解决Hbuilder打包的app返回键直接退出
问题描述:Hbuilder打包的app如果点击手机返回键,app会直接退出,返回不了上一页。
处理子页面点击
返回键直接退出,无法返回,代码如下:
//这个不是写在首页,写在子页面(子页面才能返回,写在首页点击返回就是退出) //不用引入mui.js,都是h5方法 document.addEventListener('plusready', function() { var webview = plus.webview.currentWebview(); plus.key.addEventListener('backbutton', function() { webview.canBack(function(e) { if(e.canBack) { webview.back(); } else { webview.close(); //hide,quit //plus.runtime.quit(); } }) }); });
首页点击两次退出程序,代码如下:
1 //这个写在首页,判断连击两次退出。 2 //需要引入mui.js版本,我当时测试的时候引入了,如果不想引入把带mui的都删了就可以(或者看下面那个) 3 mui.plusReady(function() { 4 //首页返回键处理 5 //处理逻辑:1秒内,连续两次按返回键,则退出应用; 6 var first = null; 7 plus.key.addEventListener('backbutton', function() { 8 //首次按键,提示‘再按一次退出应用’ 9 if (!first) { 10 first = new Date().getTime(); 11 mui.toast('再按一次退出应用'); 12 setTimeout(function() { 13 first = null; 14 }, 1000); 15 } else { 16 if (new Date().getTime() - first < 1000) { 17 plus.runtime.quit(); 18 } 19 } 20 }, false); 21 }); 22 23 //不需要mui.js版本 24 document.addEventListener('plusready', function(a) { 25 var first = null; 26 plus.key.addEventListener('backbutton', function() { 27 //首次按键,提示‘再按一次退出应用’ 28 if (!first) { 29 first = new Date().getTime(); 30 console.log('再按一次退出应用');//用自定义toast提示最好 31 setTimeout(function() { 32 first = null; 33 }, 1000); 34 } else { 35 if (new Date().getTime() - first < 1000) { 36 plus.runtime.quit(); 37 } 38 } 39 }, false); 40 });
完整js代码:
1 //完整版就是,所有页面都引入这一段代码,而上面子页面和首页需要分别引入对应代码 2 3 //需要mui.js版本 4 <script> 5 document.addEventListener('plusready', function() { 6 var webview = plus.webview.currentWebview(); 7 plus.key.addEventListener('backbutton', function() { 8 webview.canBack(function(e) { 9 if(e.canBack) { 10 webview.back(); 11 } else { 12 //webview.close(); //hide,quit 13 //plus.runtime.quit(); 14 mui.plusReady(function() { 15 //首页返回键处理 16 //处理逻辑:1秒内,连续两次按返回键,则退出应用; 17 var first = null; 18 plus.key.addEventListener('backbutton', function() { 19 //首次按键,提示‘再按一次退出应用’ 20 if (!first) { 21 first = new Date().getTime(); 22 mui.toast('再按一次退出应用'); 23 setTimeout(function() { 24 first = null; 25 }, 1000); 26 } else { 27 if (new Date().getTime() - first < 1500) { 28 plus.runtime.quit(); 29 } 30 } 31 }, false); 32 }); 33 } 34 }) 35 }); 36 }); 37 38 //不需要mui.js版本 39 document.addEventListener('plusready', function() { 40 var webview = plus.webview.currentWebview(); 41 plus.key.addEventListener('backbutton', function() { 42 webview.canBack(function(e) { 43 if(e.canBack) { 44 webview.back(); 45 } else { 46 //webview.close(); //hide,quit 47 //plus.runtime.quit(); 48 //首页返回键处理 49 //处理逻辑:1秒内,连续两次按返回键,则退出应用; 50 var first = null; 51 plus.key.addEventListener('backbutton', function() { 52 //首次按键,提示‘再按一次退出应用’ 53 if (!first) { 54 first = new Date().getTime(); 55 console.log('再按一次退出应用'); 56 setTimeout(function() { 57 first = null; 58 }, 1000); 59 } else { 60 if (new Date().getTime() - first < 1500) { 61 plus.runtime.quit(); 62 } 63 } 64 }, false); 65 } 66 }) 67 }); 68 }); 69 </script>
参考自:https://blog.csdn.net/sdx1237/article/details/90691238