場景描述
vue搭建的多頁面應用項目,使用go(-1)回退至前個頁面。
正常的話,回退後會刷新前個頁面,各個生命週期鉤子函數觸發。
然而,在Android和ios13以下是正常的,到了ios13就不行了。
解決方案
由於項目爲多頁面應用,無法通過Vuex狀態狀態解決該問題,因爲多頁面應用創建了多個vue實例。
同理,嘗試了storage監聽、evenbus也無法解決。
問題原因應該是ios13的Webview刷新機制改了,看到了一個回答:WKWebView回退不會對頁面再次刷新
通過在mounted中監聽window的pageshow事件來手動刷新,解決!
window.addEventListener('pageshow', function(){
if(this.isPageHide) {
window.location.reload();
}
});
window.addEventListener('pagehide', function(){
this.isPageHide = true;
});