切换模式
h5打包app点击手机返回键(滑动侧边返回)直接退出app的解决方法
提示
h5打包的app,在android手机上,点击手机自带的物理返回键,直接退出了app。由于onbackPress在app上不生效,于是用js的方式去做了拦截,实现了点击物理返回键返回上一页,而不是退出app。(提示:代码放在main.js文件中,不要乱放)
首先先创建一个文件,命名为:app-back-button.js
, 放在文件的utils目录里,或者随意,记住路径就行
js
// 解决 关于HBuilder X打包的APP按返回键退出的问题
document.addEventListener('plusready', function() {
var first = null;
// console.log('再按一次退出应用');//用自定义toast提示最好
var webview = window.plus.webview.currentWebview();
window.plus.key.addEventListener('backbutton', function() {
webview.canBack(function(e) {
if (e.canBack) {
webview.back(); //这里不建议修改自己跳转的路径
} else {
//首次按键,提示‘再按一次退出应用’
if (!first) {
first = new Date().getTime(); //获取第一次点击的时间戳
// console.log('再按一次退出应用');//用自定义toast提示最好
// toast('双击返回键退出应用'); //调用自己写的吐丝提示 函数
window.plus.nativeUI.toast('再按一次退出应用', {
duration: 'short'
}); //通过H5+ API 调用Android 上的toast 提示框
setTimeout(function() {
first = null;
}, 1000);
} else {
if (new Date().getTime() - first < 1000) { //获取第二次点击的时间戳, 两次之差 小于 1000ms 说明1s点击了两次
window.plus.runtime.quit(); //退出应用
}
}
};
});
});
});
// 解决 关于HBuilder X打包的APP按返回键退出的问题
document.addEventListener('plusready', function() {
var first = null;
// console.log('再按一次退出应用');//用自定义toast提示最好
var webview = window.plus.webview.currentWebview();
window.plus.key.addEventListener('backbutton', function() {
webview.canBack(function(e) {
if (e.canBack) {
webview.back(); //这里不建议修改自己跳转的路径
} else {
//首次按键,提示‘再按一次退出应用’
if (!first) {
first = new Date().getTime(); //获取第一次点击的时间戳
// console.log('再按一次退出应用');//用自定义toast提示最好
// toast('双击返回键退出应用'); //调用自己写的吐丝提示 函数
window.plus.nativeUI.toast('再按一次退出应用', {
duration: 'short'
}); //通过H5+ API 调用Android 上的toast 提示框
setTimeout(function() {
first = null;
}, 1000);
} else {
if (new Date().getTime() - first < 1000) { //获取第二次点击的时间戳, 两次之差 小于 1000ms 说明1s点击了两次
window.plus.runtime.quit(); //退出应用
}
}
};
});
});
});
最后在main.js里面引入:
js
import '@/utils/app-back-button.js';
import '@/utils/app-back-button.js';