内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

如何解決vue單頁(yè)面在微信下只能分享落地頁(yè)的問(wèn)題

這篇文章主要介紹如何解決vue單頁(yè)面在微信下只能分享落地頁(yè)的問(wèn)題,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到旌陽(yáng)網(wǎng)站設(shè)計(jì)與旌陽(yáng)網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:做網(wǎng)站、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋旌陽(yáng)地區(qū)。

實(shí)際上關(guān)鍵詞叫 微信pushState只能分享落地頁(yè) 更貼切一點(diǎn)

應(yīng)用場(chǎng)景:

  1. vue + vue-router

  2. vue-router使用hash模式(history模式?jīng)]試過(guò))

  3. 不使用微信的js-sdk(因?yàn)槲疫@個(gè)項(xiàng)目是可配置域名的商城,比較特殊,不能使用微信sdk)

這個(gè)方案并不是最優(yōu)秀的,會(huì)對(duì)性能造成一定的影響

HTML5 history.pushState

vue-router的內(nèi)部是通過(guò) history.pushState 和 history.replaceState 實(shí)現(xiàn)的。但是iOS設(shè)備的微信瀏覽器不會(huì)去檢測(cè)它們的變化。但是我們可以通過(guò)更新 location.href 讓微信瀏覽器識(shí)別到當(dāng)前的url。

// vue-router/src/util/push-state.js

export function pushState (url?: string, replace?: boolean) {
 saveScrollPosition()
 // try...catch the pushState call to get around Safari
 // DOM Exception 18 where it limits to 100 pushState calls
 const history = window.history
 try {
  if (replace) {
   history.replaceState({ key: _key }, '', url)
  } else {
   _key = genKey()
   history.pushState({ key: _key }, '', url)
  }
 } catch (e) {
  window.location[replace ? 'replace' : 'assign'](url)
 }
}

export function replaceState (url?: string) {
 pushState(url, true)
}

解決方法

window.location.href = window.location.href ,這段代碼可以讓微信記錄當(dāng)前的url,且不會(huì)刷新頁(yè)面??梢栽赼pp.vue中 watch $route 在每次頁(yè)面更新的時(shí)候執(zhí)行一次。

// app.vue

watch: {
 $route: {
  immediate: true,
  deep: true,
  handler(to) {
   // 微信瀏覽器判斷
   const WECHAT_BROWSER = navigator.userAgent.toLowerCase().includes('micromessenger')

   // 解決iOS微信瀏覽器分享地址只能是落地頁(yè)的問(wèn)題,這個(gè)操作是不會(huì)刷新頁(yè)面的,query參數(shù)改變也會(huì)執(zhí)行
   if (WECHAT_BROWSER) {
    // eslint-disable-next-line
    window.location.href = window.location.href
   }
  }
},

使用了上述方法可以解決這個(gè)問(wèn)題,但是這會(huì)引出一個(gè)很奇葩的問(wèn)題,在真機(jī)上進(jìn)入 http://192.168.1.5:8080 和 http://192.168.1.5:8080/#/ 這兩個(gè)頁(yè)面,其中有一個(gè)鏈接的bug依然存在。原因具體不清楚,經(jīng)過(guò)測(cè)試可以在入口文件(main.js)中在頁(yè)面還沒(méi)有展示內(nèi)容前刷新一次頁(yè)面,即可解決這個(gè)問(wèn)題。

// main.js

// 微信瀏覽器判斷
const WECHAT_BROWSER = navigator.userAgent.toLowerCase().includes('micromessenger')

// 在url插入的search參數(shù),可以隨意,但是必須要
// 例:http://192.168.1.5:8080/?_wx_=1#/
const wxQuery = '_wx_=1'
const isRepeatQuery = location.search.includes(wxQuery)
if (WECHAT_BROWSER && !isRepeatQuery) {
 const unit = (location.search && location.search !== '?') ? '&' : '?'
 location.search += unit + wxQuery  // 添加_wx_參數(shù),該操作會(huì)刷新頁(yè)面
}

上面的代碼之所以要在 hash 前面加一個(gè) ?_wx_=1 參數(shù),為了方便刷新頁(yè)面給一個(gè)標(biāo)志位判斷是否已刷新。參數(shù)的 key-value 隨意。

以上是“如何解決vue單頁(yè)面在微信下只能分享落地頁(yè)的問(wèn)題”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)頁(yè)名稱:如何解決vue單頁(yè)面在微信下只能分享落地頁(yè)的問(wèn)題
文章轉(zhuǎn)載:http://www.rwnh.cn/article12/iggpdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、App設(shè)計(jì)、微信公眾號(hào)、網(wǎng)站排名商城網(wǎng)站、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
凤庆县| 屏东县| 稷山县| 台南市| 韩城市| 彰化县| 玛纳斯县| 称多县| 伊川县| 平安县| 达尔| 额济纳旗| 黎平县| 葵青区| 门头沟区| 汝阳县| 平舆县| 无棣县| 化隆| 濮阳市| 苗栗县| 汾西县| 固阳县| 兰西县| 上杭县| 开江县| 建德市| 南皮县| 土默特右旗| 祁连县| 平江县| 辉南县| 泰安市| 法库县| 阿拉善左旗| 昌吉市| 丹巴县| 揭阳市| 分宜县| 招远市| 兰考县|