問題描述: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();
}
})
});
});
首頁點擊兩次退出程序,代碼如下:
//這個寫在首頁,判斷連擊兩次退出。
//需要引入mui.js版本,我當時測試的時候引入了,如果不想引入把帶mui的都刪了就可以(或者看下面那個)
mui.plusReady(function() {
//首頁返回鍵處理
//處理邏輯:1秒內,連續兩次按返回鍵,則退出應用;
var first = null;
plus.key.addEventListener('backbutton', function() {
//首次按鍵,提示‘再按一次退出應用’
if (!first) {
first = new Date().getTime();
mui.toast('再按一次退出應用');
setTimeout(function() {
first = null;
}, 1000);
} else {
if (new Date().getTime() - first < 1000) {
plus.runtime.quit();
}
}
}, false);
});
//不需要mui.js版本
document.addEventListener('plusready', function(a) {
var first = null;
plus.key.addEventListener('backbutton', function() {
//首次按鍵,提示‘再按一次退出應用’
if (!first) {
first = new Date().getTime();
console.log('再按一次退出應用');//用自定義toast提示最好
setTimeout(function() {
first = null;
}, 1000);
} else {
if (new Date().getTime() - first < 1000) {
plus.runtime.quit();
}
}
}, false);
});
完整js代碼:
//完整版就是,所有頁面都引入這一段代碼,而上面子頁面和首頁需要分別引入對應代碼
//需要mui.js版本
<script>
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();
mui.plusReady(function() {
//首頁返回鍵處理
//處理邏輯:1秒內,連續兩次按返回鍵,則退出應用;
var first = null;
plus.key.addEventListener('backbutton', function() {
//首次按鍵,提示‘再按一次退出應用’
if (!first) {
first = new Date().getTime();
mui.toast('再按一次退出應用');
setTimeout(function() {
first = null;
}, 1000);
} else {
if (new Date().getTime() - first < 1500) {
plus.runtime.quit();
}
}
}, false);
});
}
})
});
});
//不需要mui.js版本
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秒內,連續兩次按返回鍵,則退出應用;
var first = null;
plus.key.addEventListener('backbutton', function() {
//首次按鍵,提示‘再按一次退出應用’
if (!first) {
first = new Date().getTime();
console.log('再按一次退出應用');
setTimeout(function() {
first = null;
}, 1000);
} else {
if (new Date().getTime() - first < 1500) {
plus.runtime.quit();
}
}
}, false);
}
})
});
});
</script>