微信同一个页面分享出去如何形成不同的链接

发布于 2022-09-05 10:11:29 字数 682 浏览 22 评论 0

假设用户访问的是goods.php, 这个页面上有很多商品,但只展示商品名称,如图:

用户点击A商品展示A商品的内容,点击商品B展示B的内容。
同时,url的链接会变成goods.php#A或者goods.php#B,这样当用户把这个链接分享出去的时候别人进来即可看到A商品或者B商品,这个可以截取location.hash实现没问题。
问题是:当不调用微信的分享接口用户分享动作的时候就会把当前url分享出去,也就是带上#A、#B的链接没问题;但是当调用微信分享接口时发现个问题,我即使写了一个函数,动态传参数去调用分享接口也没用,因为第一次调用的时候页面分享链接已经确定了,比如用户点了A,我传了#A到函数里去,页面分享出去链接变成了#A的,但是我再点B,传#B到函数里去,页面的分享链接还是A的。也就是
图片描述

这个函数,没法通过重复调用改变下一次分享出去的url,看了下微信文档关于这个分享接口的部分也没找到对应的接口,有人遇到过嘛。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ゞ花落谁相伴 2022-09-12 10:11:29

搞定了。。发现微信那个jssdk里获取分享链接是这样的,link: a.link || location.href;所以不传link参数,那么就会动态获取当前链接作为分享的链接。
最终jweixin.js修改后的代码:

onMenuShareTimeline: function(a) {
    d(p.onMenuShareTimeline, {
        complete: function() {
            var link = a.link || location.href;
            // useEncoded是在设置分享参数时额外传过来的参数,encoded是个全局变量,用于分享链接可以追踪到是谁分享的
            if(a.useEncoded && typeof encoded['timeline'] != 'undefined'){
                // 自定义分享链接并把location.hash拼到url结尾
                link = link.replace(/#\d+/, '');
                link = link + (link.indexOf('?') != -1 ? '&' : '?') + 'enc_data=' + encoded['timeline'] + location.hash;
            }
            c("shareTimeline", {
                title: a.title || s,
                desc: a.title || s,
                img_url: a.imgUrl || "",
                link: link,
                type: a.type || "link",
                data_url: a.dataUrl || ""
            },
            a)
        }
    },
    a)
},
秋心╮凉 2022-09-12 10:11:29

我之前遇到过类似的问题。wx里面对应的方法里面的所有参数,页面出来后,实例化是什么样就是什么样的。
比方说,你给了一个全局变量,想通过触发某个事件,来改变这个变量,而这个变量刚好在wx方法里面,这个行不通。

我是这么理解的,wx实例化之后,就类似被缓存了,只要你页面没刷新,你wx方法里面的任何参数,都不会受到外部的影响。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文