vue項目中監(jiān)聽手機物理返回鍵的實現(xiàn)
背景:項目中有一個場景要監(jiān)聽android手機物理返回鍵,但是app和js的中間件又沒提供這個事件的監(jiān)聽,只能百度純js實現(xiàn)了
第一步:
xback.js
;!function(pkg, undefined){ var STATE = 'x-back'; var element; var onPopState = function(event){ event.state === STATE && fire(); } var record = function(state){ history.pushState(state, null, location.href); } var fire = function(){ var event = document.createEvent('Events'); event.initEvent(STATE, false, false); element.dispatchEvent(event); } var listen = function(listener){ element.addEventListener(STATE, listener, false); } ;!function(){ element = document.createElement('span'); window.addEventListener('popstate', onPopState); this.listen = listen; this.record = record(STATE); record(STATE); }.call(window[pkg] = window[pkg] || {}); }('XBack');
第二步:
加載xback.js文件
<remote-script src="../js/xback.js" @load="loadXBack"></remote-script>
自定義組件remote-script可以參考我另外的一篇文章:http://chabaoo.cn/article/178777.htm
第三步:
監(jiān)聽返回鍵事件
methods: { // JavaScript監(jiān)聽手機物理返回鍵 loadXBack () { window.XBack.listen(() => { this.dialog = this.$createDialog({ type: 'confirm', content: `確定返回嗎?`, confirmButton: { text: '確定', active: true, disabled: false }, cancelButton: { text: '取消', active: false, disabled: false }, onConfirm: () => { this.dialog.hide() this.close() }, onCancel: () => { this.dialog.hide() window.history.pushState('x-back', null, window.location.href) } }) this.dialog.show() }) }, }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解決vue報錯:Do?not?mutate?vuex?store?state?outside?mutati
這篇文章主要介紹了解決vue報錯:Do?not?mutate?vuex?store?state?outside?mutation?handlers問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05vue3父子同信的雙向數(shù)據(jù)的項目實現(xiàn)
我們知道的是,父傳子的通信,和子傳父的通信,那如何實現(xiàn)父子相互通信的呢,本文就來詳細的介紹一下,感興趣的可以了解一下2023-08-08VUE2.0自定義指令與v-if沖突導(dǎo)致元素屬性修改錯位問題及解決方法
這篇文章主要介紹了VUE2.0自定義指令與v-if沖突導(dǎo)致元素屬性修改錯位問題及解決方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07vue/Element?UI實現(xiàn)Element?UI?el-dialog自由拖動功能實現(xiàn)
最近工作上需要在el-dialog基礎(chǔ)上進行些功能的改動,下面這篇文章主要給大家介紹了關(guān)于vue/Element?UI實現(xiàn)Element?UI?el-dialog自由拖動功能實現(xiàn)的相關(guān)資料,需要的朋友可以參考下2023-06-06