vue監(jiān)聽(tīng)瀏覽器原生返回按鈕,進(jìn)行路由轉(zhuǎn)跳操作
今天測(cè)試給我報(bào)了個(gè)bug說(shuō)點(diǎn)擊瀏覽器返回頁(yè)數(shù)據(jù)顯示的不對(duì),我查了半天原因:需要監(jiān)聽(tīng)瀏覽器的回退按鈕,并阻止其默認(rèn)事件。
具體操作方法如下:
1、掛載完成后,判斷瀏覽器是否支持popstate
mounted(){
if (window.history && window.history.pushState) {
history.pushState(null, null, document.URL);
window.addEventListener('popstate', this.cancel, false);
}
},
2、頁(yè)面銷(xiāo)毀時(shí),取消監(jiān)聽(tīng)。否則其他vue路由頁(yè)面也會(huì)被監(jiān)聽(tīng)
destroyed(){
window.removeEventListener('popstate', this.cancel, false);
}
3、將監(jiān)聽(tīng)操作寫(xiě)在methods里面,removeEventListener取消監(jiān)聽(tīng)內(nèi)容必須跟開(kāi)啟監(jiān)聽(tīng)保持一致,所以函數(shù)拿到methods里面寫(xiě)
cancel: function() {
if(this.orderId){
this.$router.push({
name:"orderList",
params: {id:this.orderId},
});
}else{
this.$router.go(-1);
}
},
補(bǔ)充知識(shí):vue-router組件內(nèi)導(dǎo)航守衛(wèi)判斷返回按鈕
組件內(nèi)導(dǎo)航守衛(wèi)會(huì)出現(xiàn)無(wú)法攔截$router.go(-1)或者物理返回按鈕,在攔截函數(shù)外包裹setTimeout即可。具體原因還未發(fā)現(xiàn)。
setTimeout(() => {
this.$confirm('編輯的頁(yè)面布局尚未保存,確定離開(kāi)?', '提示', {
confirmButtonText: '確定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
next()
return
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
})
next(false)
return
})
}, 500)
以上這篇vue監(jiān)聽(tīng)瀏覽器原生返回按鈕,進(jìn)行路由轉(zhuǎn)跳操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- vue項(xiàng)目使用js監(jiān)聽(tīng)瀏覽器關(guān)閉、刷新及后退事件的方法
- vue監(jiān)聽(tīng)瀏覽器網(wǎng)頁(yè)關(guān)閉和網(wǎng)頁(yè)刷新事件代碼示例
- vue3動(dòng)態(tài)監(jiān)聽(tīng)瀏覽器窗口變化實(shí)例
- vue如何監(jiān)聽(tīng)瀏覽器主動(dòng)刷新
- vue瀏覽器返回監(jiān)聽(tīng)的具體步驟
- 解決vue單頁(yè)面多個(gè)組件嵌套監(jiān)聽(tīng)瀏覽器窗口變化問(wèn)題
- vue監(jiān)聽(tīng)瀏覽器的后退和刷新事件,阻止默認(rèn)的事件方式
相關(guān)文章
Vue3+Hooks實(shí)現(xiàn)4位隨機(jī)數(shù)和60秒倒計(jì)時(shí)的示例代碼
Vue3的Hooks是一種新的 API,本文主要介紹了Vue3+Hooks實(shí)現(xiàn)4位隨機(jī)數(shù)和60秒倒計(jì)時(shí)的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04
Vue實(shí)現(xiàn)自定義視頻和圖片上傳的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)Vue實(shí)現(xiàn)自定義視頻和圖片上傳的功能,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-04-04
基于vue-cli創(chuàng)建的項(xiàng)目的目錄結(jié)構(gòu)及說(shuō)明介紹
下面小編就為大家分享一篇基于vue-cli創(chuàng)建的項(xiàng)目的目錄結(jié)構(gòu)及說(shuō)明介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助2017-11-11
Vue 3開(kāi)發(fā)中VueUse強(qiáng)大Hooks庫(kù)
VueUse提供了一個(gè)豐富且強(qiáng)大的Hooks庫(kù),可以幫助開(kāi)發(fā)者快速實(shí)現(xiàn)各種功能,提高開(kāi)發(fā)效率,本文來(lái)詳細(xì)的介紹一下,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08
vue性能優(yōu)化之cdn引入vue-Router的問(wèn)題
這篇文章主要介紹了vue性能優(yōu)化之cdn引入vue-Router的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08

