vue ios端不能正確複製頁面連結
阿新 • • 發佈:2019-01-03
最近使用vue開發微信分享功能,發現在安卓端路由如何跳轉都能複製當前的頁面路徑,而使用ios卻只能獲取到首次進入頁面時的頁面路徑。
比如: www.baidu.com/login ==> www.baidu.com/user ==> 。。。。。,路由類似這樣跳轉了多次,ios複製連結時只能獲取到首次進入時的www.baidu.com/login,而不能複製我最終跳轉的頁面路徑。
原因我也不是很清楚,總之就是ios沒有重新整理url。
解決的方法是使用 vue-router的路由守衛功能,在路由跳轉前判斷即將跳轉的頁面和當前首次進入的頁面是否一致,如果不一致,則重定向(相當於帶了重新整理的功能)到即將跳轉的頁面(全路徑,包括需要帶的引數)。
程式碼如下:
router.beforeEach((to, from, next) => {
if (to.path !== global.location.pathname) {
location.assign(to.fullPath)
}
next()
})
window.location.assign(url) : 載入 URL 指定的新的 HTML 文件。 就相當於一個連結,跳轉到指定的url,當前頁面會轉為新頁面內容,可以點選後退返回上一個頁面。
上面的方法解決了ios複製連結的問題,假如有一個需求是從當前頁面的某個位置跳轉到下一個頁面,點選返回後還要定位到跳轉前的那個位置就無效了(返回後還在原來的位置,在路由中配置使用keepalive就可以了)。現在使用了location.assign(url)相當於重新整理了頁面,頁面資訊重置了。