hash模式下微信分享参数问题

/ 0评 / 3
内容纲要

单页面应用在hash模式下,由于url中存在 “#”,在微信分享朋友圈或好友时,分享出去的链接会被添加上fromTimeline等参数,导致不能跳转到响应的页面。


如: 正常分享路径:https://xxx/views/search_lable/#/search/list?id=1 分享后的路径:https://xxx/views/search_lable/?from=singlemessage#/ 此时拿到的路由地址无法取到后续的单页面路由,及参数地址。

解决思路

由于微信 “#”前添加参数,需要我们手动拼接分享链接,或者避免链接中出现 “#”。

方法一:手动拼接参数地址
https://www.xxx.com/views/search_lable/#/search/list?id=${id}
当分享主体比较多时,手动拼接就显得不是太灵活。

方法二:过滤# 参数
(window.location.href).replace(window.location.search,'')
如页面地址为:
https://www.xxx.com/views/search_lable/?from=singlemessage#/search/list?id=2
通过过滤后得到url为:
https://www.xxx.com/views/search_lable/#/search/list?id=2

方法三:# 前添加 ?
https://www.xxx.com/views/search_lable/?#/search/list?id=2

方法四:通过中间页面路由重定向转发跳转 分享url :window.location.href.split("#")[0] + "redirect.html?app3Redirect=" + encodeURIComponent(window.location.href) 中间页面 rediect.html

        "use strict";
        var url = location.href.split('?');
        var pars = url[1].split('&');
        var data = {};
        pars.forEach(function (n, i) {
            var p = n.split('=');
            data[p[0]] = p[1];
        });

        if (!!data.app3Redirect) {
            self.location = decodeURIComponent(data.app3Redirect);
        }


发表评论

电子邮件地址不会被公开。