web app 中物理返回鍵的監聽
使用Vue + Vant 進行web app 的開發,需要處理 android 自帶的物理返回鍵,對不同頁面,點選物理返回鍵進行不同的處理
那如何監聽到物理返回鍵,並進行相應的處理?
app網頁返回鍵 vs 手機物理返回鍵
網頁上的返回鍵是返回上一個頁面的意思,
手機上的返回鍵是返回上一個操作。
並且手機上的返回鍵還有很多其它功能,在使用某些軟體可以雙擊返回鍵退出app
Vue 中監聽物理返回鍵
使用h5+ 提供的 plus 物件進行處理,具體程式碼如下
document.addEventListener('plusready', function () {
var webview = plus.webview.currentWebview();
plus.key.addEventListener('backbutton', function () {
webview.canBack(function (e) {
if (e.canBack) {
webview.back(-1); //返回上一頁
} else {
webview.close(); //關閉應用
}
})
});
plus is not defined
在使用過程中,會遇到錯誤"plus is not defined" , 所以,在使用plus時,注意判斷plus是否存在。
程式碼如下:
if (window.plus) {
this.plusReady()
} else {
document.addEventListener('plusready', this.plusReady, false)
}
將 backbutton 事件的新增,處理程式,寫在 plusReady 方法中,即可
單擊返回,雙擊退出app
實現,單擊返回鍵進行退出,雙擊退出app
分析:通過一個 first 變數來記錄次數,且兩次點選的時間間隔不能超過1500.
程式碼如下:
document.addEventListener('plusready', function () {
var webview = plus.webview.currentWebview();
plus.key.addEventListener('backbutton', function () {
webview.canBack(function (e) {
if (e.canBack) {
webview.back();
} else {
//首頁返回鍵處理
//處理邏輯:1秒內,連續兩次按返回鍵,則退出應用;
var first = null;
plus.key.addEventListener('backbutton', function () {
//首次按鍵,提示‘再按一次退出應用’
if (!first) {
first = new Date().getTime();
alert('再按一次退出應用');//返回提示
setTimeout(function () {
first = null;
}, 1000);
} else {
if (new Date().getTime() - first < 1500) {
plus.runtime.quit();
}
}
}, false);
}
})
});
});
作者:doubleyong
公眾號:bug收集
部落格:bugshouji.com (專門解決與收集bug的網站)
歡迎新增下面的 “公眾號” ,可以第一時間獲到文章推送 @_@
相關文章
- H5-監聽任何安卓機、App自帶的物理返回鍵H5安卓APP
- H5頁面監聽Android物理返回鍵H5Android
- JS監聽手機物理返回鍵(及IOS微信端的bug)JSiOS
- 安卓使用物理鍵監聽器安卓
- android PopupWindow監聽返回鍵無效Android
- 使用h5新特性,輕鬆監聽任何App自帶返回鍵H5APP
- flutter中監聽鍵盤Flutter
- uniapp打包成apk,監聽安卓手機的返回鍵APPAPK安卓
- Flutter監聽路由返回Flutter路由
- java鍵盤監聽之視窗監聽的實現Java
- 監聽鍵盤事件事件
- Android Home鍵、鎖屏鍵監聽Android
- python pynput監聽鍵盤Python
- weex生成的單頁應用嵌入app中,點選物理返回鍵時如何返回上一個路由頁面,而不是直接退出單頁應用,回到原生app頁面APP路由
- vue的監聽鍵盤事件的快捷方法Vue事件
- javaWeb中的監聽器JavaWeb
- AndroidStudio點選兩次返回鍵,退出APPAndroidAPP
- AndroidTV開發中所有的遙控器按鍵監聽及注意事項,新增home鍵監聽Android
- 移動Web——localStorage,sessionStorage,Storage事件監聽WebSession事件
- Echarts 監聽滑鼠右鍵或者雙擊Echarts
- (譯文)swift中的監聽者Swift
- 有大佬知道,如何去 mock app 監聽的 websocket 嗎?MockAPPWeb
- 監聽瀏覽器返回,pushState,popstate 事件,window.history物件瀏覽器事件物件
- Android監聽軟鍵盤收起與彈出Android
- 監聽 watch props物件屬性監聽 或深度監聽物件
- flutter 中監聽滑動事件Flutter事件
- Springboot中自定義監聽器Spring Boot
- h5監聽手機鍵盤彈起H5
- Android 監聽鍵盤狀態變化,並獲取鍵盤高度Android
- vue中如何監聽vuex中的資料變化Vue
- Vue 中 MathJax 的使用與渲染的監聽 (下)Vue
- FreeSwtich的監聽功能
- 適配target30返回監聽以及簡單分析finish()和onBackPressed()的區別
- Redis中監聽key過期通知Redis
- docker中搭建canal監聽mysql例子DockerMySql
- Vue3.0的遞迴監聽和非遞迴監聽Vue遞迴
- 【JS】在連續性監聽事件中,監聽當前狀態是否變化JS事件
- Spring中如何優雅的使用監聽器模式Spring模式