雖然加班,最近心情還是可以的,沒多少bug找上門。
樂級生悲,遇到了個奇葩的坑,花了點時間百度才解決。。。但我離不開的‘板磚’是安卓的,對此坑是抗拒的,完全沒問題。。。
#此坑描述
...訂單詳情某按鈕點擊,通過window.location.href跳轉到(外部)第三方鏈接后,回退后,在ios中生命周期和路由導航鈎子都失效了,無法觸發。
...在安卓中無視此坑, 回退沒有問題
#解決
解決方案原因:根據強大的度娘,大概了解此問題可能是因為緩存造成的,所以頁面生命鈎子,路由鈎子沒有觸發
解決方案提供:onpageshow事件。 在用戶瀏覽網頁時觸發
onpageshow 事件類似onload事件;
onload 事件在頁面第一次加載時觸發;
onpageshow 事件在每次加載頁面時觸發,即 onload 事件在頁面從瀏覽器緩存中讀取時不觸發;
解決方案驗證:找了幾個ios機,一切ok
created () { window.addEventListener('pageshow', () => { //回退到vue應用執行的操作 }) }
#例子
注:組件銷毀時最好銷毀pageShow事件,避免消耗
created() { //處理跳轉外部鏈接后,ios回退標題不改變問題 if (this.$store.state.isIOS) { window.addEventListener('pageshow', this.setNav) } }, beforeDestroy(){ if (this.$store.state.isIOS) { window.removeEventListener('pageshow', this.setNav) } }, methods:{ // 設置標題 setNav(){ console.log('aaaaaaa----'); window.$native.setNavTitle('訂單詳情', '', '') console.log('bbbbbbbbbbb'); }, }