一、问题

一个用到了微信 JSSDK 的网页在调用分享的时候发现有的时候分享是失效的

而在调试过程中发现 congfig 都是 ok 的

但是起初没有定位到问题的原因所在。

二、解决

首先从下面几个方面排查问题:

1、config 配置是否正确

js 配置里面开启 debug:true 就能够 alert 出错误信息,当然也可以使用 vConsole 直接在手机上查看 console 内容

上面说了,config 都是 ok 的,因此 config 本身不存在问题。

如果 config 存在问题,可以考虑替换 & -> %26

这个问题主要是将 location.href 中 & 进行转义,否则后端无法接收到 & 之后的内容

比如下面代码:

var shareLinkUlr = location.href.split("#")[0];
shareLinkUlr = shareLinkUlr.replace(/\&/g, '%26');

2、排查 imgUrl

如果 config 没问题,则问题可能出现在是否支持接口上(这一点可以直接排除,基本上都是支持的

如果是图片没有正确显示,而 desc 和 title 显示没有问题,肯定是 imgUrl 出现了错误。

3、如果有时候好用有时候不要用,则要注意 是否是 link 的错误

建议使用的 link 如下:

 wx.onMenuShareAppMessage({
        title: 'xxxxxxxxxx', // 分享标题
        desc: 'xxxx', // 分享描述
        link: location.href, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: shareImgUrl, // 分享图标
        type: 'link', // 分享类型,music、video或link,不填默认为link
        success: function () {
            // alert('分享成功');
        },
        cancel: function () {
            // alert("分享已经取消");
        }
    });

location.href 是最安全靠谱的,我最早出现问题的时候就是用了 之前处理过的 url,结果导致有时候无法正确分享。

4、可能存在问题

建议分享的时候还是把 index.html 加上去,而不仅仅是使用文件夹目录。

有些时候会解决一些无法洞察的问题。