記 vue-router 在微信瀏覽器中操做history URl未改變的解決方案

背景

在PC端和手機瀏覽器中router.replace() or router.push()可以正常使用,頁面的地址和頁面都正常顯示;可是在微信中,從/a頁面經過router.push('/b')跳轉到/b頁面後,頁面正常,可是複製瀏覽器的地址會發現其地址仍爲/a;選擇在瀏覽器打開發現也是顯示的/a的頁面。
這應該是微信瀏覽器那邊的問題,微信瀏覽器只會記住你第一次進來的地址。ios

微信瀏覽器不會自動添加 #

在pc端或者手機瀏覽器開發的時候 輸入localhost:8080,瀏覽器會自動跳轉到localhost:8080/#/,可是在微信瀏覽器中,雖然頁面顯示正常了,可是咱們經過微信右上角的選項複製當前的地址,會發現地址爲仍然localhost:8080,這後面致使了其餘的 router.push()操做都沒法修改微信瀏覽器的url;固然,若是咱們在程序中alert(location.href)是正常的。瀏覽器

  • 解決方案

在進入頁面的時候咱們默認的給url加上#,即localhost:8080/#/,再次測試後發現 安卓 中微信瀏覽器的url和咱們項目中的url相對應了。微信

iOS中微信瀏覽器url仍然不對應

處理完上面的問題後測試安卓機正常了,可是iOS機型微信中在/b頁面複製地址中仍然/a頁面,查看資料網上不少人都說能夠經過連接的方式處理。測試

1.用history的時候,把router-link換成a標籤跳轉,url

個人處理方式是點擊跳轉後直接使用window.location.herf = 'localhost:8080/#/b'的方式,即直接拼接好跳轉的後路由地址。暫時解決了這個問題
由於我在項目中測試只有ios在微信中出現這個問題,因此只針對ios在微信中特殊處理。其餘狀況下仍是經過hash路由正常處理。code

相關文章
相關標籤/搜索