vue - 解決頁面跳轉到外部鏈接后,ios回退到本頁面,生命周期,路由導航守衛鈎子都無法觸發的問題


雖然加班,最近心情還是可以的,沒多少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');
    },
    
  }
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM