vue中解決微信html5原生ios虛擬鍵返回不刷新問題
問題描述:
做微信h5頁面時,經(jīng)過了微信授權才跳轉到一級默認路由home.vue中,因此在home頁面時在IOS中底部會出現(xiàn)虛擬的返回鍵,安卓上不會出現(xiàn)。且在IOS點擊返回時會跳轉到home空白頁面不重新加載,但是在安卓機上點擊返回鍵會重新加載。
實現(xiàn)功能:
解決IOS問題(在home頁面點返回時路由還是在home頁面,并完成重新加載)
分析:
需要在進入頁面時加入監(jiān)聽,并在頁面離開時移除監(jiān)聽。因為home頁面是個滾動列表,所以我采用了keep-alive路由緩存,所以不能在created()和beforeDestroy()生命周期中寫,因此我在home.vue中加了組件內(nèi)的守衛(wèi)beforeRouteLeave ()在里面移除監(jiān)聽,在activated()中添加監(jiān)聽。
如果頁面沒有采用路由緩存,則監(jiān)聽事件和移除事件可以在created()和beforeDestroy()這兩個生命周期函數(shù)中寫。
注意:
addEventListener()與removeEventListener()用于處理指定和刪除事件處理程序操作。
它們都接受3個參數(shù):事件名、事件處理的函數(shù)和布爾值。
布爾值參數(shù)是true,表示在捕獲階段調(diào)用事件處理程序;
如果是false,表示在冒泡階段調(diào)用事件處理程序。
相同事件綁定和解除,需要使用共用函數(shù);如果removeEventListener不生效,可以看看這篇文章:https://blog.csdn.net/amyleeYMY/article/details/83382741
//監(jiān)聽返回按鈕,重新加載當前頁面
window.history.pushState(state, title, utl)//在頁面中創(chuàng)建一個 history 實體,直接添加到歷史記中。
參數(shù):state:存儲一個對象,可以添加相關信息,可以使用 history.state 讀取其中的內(nèi)容。
title:歷史記錄的標題(目前瀏覽器不支持)。
url:創(chuàng)建的歷史記錄的鏈接。進行歷史記錄操作時會跳轉到該鏈接。
最終代碼:
home.vue
activated(){
//在頁面中創(chuàng)建一個 history 實體,當實體改變時會觸發(fā)popstate事件,跳轉到當前頁面,并重新加載當前頁面
window.history.pushState(null, 'ff', document.URL);
window.addEventListener('popstate',this.reload,true)
}
//本來在deactivated中寫移除事件監(jiān)聽的,但是發(fā)現(xiàn)不能移除,可能這個生命周期是在路由跳轉完(keep-alive緩存的組件停用時調(diào)用)從而找不到那個this了,所以移除監(jiān)聽失敗。
deactivated(){
window.removeEventListener('popstate',this.reload,true)
}
//所以采用組件內(nèi)的路由守衛(wèi)beforeRouteLeave,成功解決了移除監(jiān)聽事件。
beforeRouteLeave (to, from, next) {
// 導航離開該組件的對應路由時調(diào)用
window.removeEventListener('popstate',this.reload,true) //這個一定要寫到next()前面
next()
}
methods:{
reload(){
window.location.reload()//重新加載
}
}
main.js
import {Component} from "vue-property-decorator";
Component.registerHooks([
'beforeRouteLeave',
]);
就這樣成功的解決IOS返回不刷新問題~歡迎小伙伴來交流
到此這篇關于vue中解決微信html5原生ios虛擬鍵返回不刷新問題的文章就介紹到這了,更多相關微信html5原生ios虛擬鍵返回不刷新內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- vue中封裝axios并實現(xiàn)api接口的統(tǒng)一管理
- vue3.0 的 Composition API 的使用示例
- 詳解Vue中Axios封裝API接口的思路及方法
- vue項目打包為APP,靜態(tài)資源正常顯示,但API請求不到數(shù)據(jù)的操作
- Vue 使用typescript如何優(yōu)雅的調(diào)用swagger API
- vue設置全局訪問接口API地址操作
- Springboot項目使用html5的video標簽完成視頻播放功能
- javascript實現(xiàn)移動端 HTML5 圖片上傳預覽和壓縮功能示例
- JS+HTML5本地存儲Localstorage實現(xiàn)注冊登錄及驗證功能示例
- JS+html5實現(xiàn)異步上傳圖片顯示上傳文件進度條功能示例
- 如何在vue中使用HTML 5 拖放API
相關文章
el-form-item表單label添加提示圖標的實現(xiàn)
本文主要介紹了el-form-item表單label添加提示圖標的實現(xiàn),我們將了解El-Form-Item的基本概念和用法,及添加提示圖標以及如何自定義圖標樣式,感興趣的可以了解一下2023-11-11
Vue中使用jsencrypt進行RSA非對稱加密的操作方法

