解决微信分享在红米等机型上,hash链接被截断

2017-11-15  本文已影响85人  Armin0202

场景


问题


解决方案


方案代码

在 html 的 head 标签中加入如下 jvascript 脚本

(function() {
    // http://test.wx.papamama.me/public/financeshop/?date=123&spaurl=%2Ffinancial-planner-info%26hashSearch%3Duuid%253D81161
    var reg = /spaurl=([^&$?]{1,})(&|$)/
    var regTestResult = reg.test(location.search)
    
    if (!reg.test(location.search)) return undefined
    
    var newHash = decodeURIComponent(RegExp.$1)
    var newSearch = location.search.replace(reg, '').replace(/&$|\?$/, '')
    
    var targetUrl = location.origin + location.pathname + newSearch + '#' + newHash
    location.replace(targetUrl)
})();

在微信分享初始化分享链接前,对SPA链接进行如下处理:

function magicLink(link) {
    // var link = 'http://test.wx.papamama.me/public/financeshop/?date=12321#/financial-planner-info?uuid=81161'
    var hashIndex = link.indexOf('#/')
    var nativeUrl = link.substring(0, hashIndex)
    var spaUrl = link.substring(hashIndex + 1, link.length)
    var targetUrl = ''
    if (/\?/.test(nativeUrl)) {
        targetUrl = nativeUrl + '&spaurl=' + encodeURIComponent(spaUrl)
    } else {
        targetUrl = nativeUrl + '?spaurl=' + encodeURIComponent(spaUrl)
    }
    return targetUrl
}
上一篇 下一篇

猜你喜欢

热点阅读