1. 程式人生 > >“vue中微信分享出來的連結點開是首頁”問題解決

“vue中微信分享出來的連結點開是首頁”問題解決

最近工作上遇到了這樣一個Bug。

公司網站有PC端和移動端,兩個版本。其中如果手機訪問PC端,則自動跳轉到移動端。(這是常規操作,沒啥稀奇點。)

可神奇的問題來了。

在移動端中有微信分享功能,如果手機直接訪問手機端的地址進入子頁面分享,點開分享的連結進入的是子頁面。但是如果是從PC端跳轉進入手機端,分享子頁面連結開啟將會是主頁。

這個問題我也百度了各種方法,折騰了一天,然而都沒啥卵用。

最後自己想了一個替代方案:

static目錄下新建一個名為html的資料夾,在html資料夾中再新建一個redirect.html(看到這個檔名是不是知道我要幹啥了)

沒錯,我們做一個重定向。

html中寫入以下內容

<script>

  let url = location.href.split('?')
  let pars = url[1].split('&')
  let data = {}
  pars.forEach((n, i) => {
    let p = n.split('=')
    data[p[0]] = p[1]
  })
  if (!!data.app3Redirect) {
    self.location = decodeURIComponent(data.app3Redirect)
  }

</script>

只需要script標籤就可以了,反正只是做重定向。

接下來就簡單了,原本設定給微信的分享連結是

shareWxLink = window.location.href

現在我們給他改成

shareWxLink = window.location.href.split('#')[0] + 'static/html/redirect.html?app3Redirect=' + encodeURIComponent(window.location.href)

這樣,我們就把當前頁的地址編碼後放到引數app3Redirect裡面,當訪問redirect.html時將自動重定向到解碼後的原地址。

到此,終於把這個坑爹的Bug給修復了。