解決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
