如何解释一种微信网页点分享按钮发送给朋友却无反应的问题?

发布于 2022-09-06 20:39:34 字数 2772 浏览 10 评论 0

问题:

问题很简单,就是我们项目组做了一个网页A并调用了微信的JS-SDK做定制分享信息。前几天做好后一切正常,做了简单的转发和测试都没有问题。到了某天(提问之时的昨天),项目组小A(iOS和Android各一台)突然说她无法分享了。我们一看症状如下:进入网页,点击右上角打开分享菜单,点击“发送给朋友”后,微信无任何反应,无法弹出朋友列表选择分享对象;但是点“发送到朋友圈”还是能正常弹出发送窗口。而且她的安卓和苹果几乎同时出现这个不能分享的问题。其他人,无论是苹果还是安卓,都表示没有遇到这个问题。

尝试排错:

1、由于其他人分享正常,因此小A试图清空iOS内微信的缓存、重启微信、更换账号、甚至重启手机,但是无济于事,依然不能分享。

2、排除是否所有网页都出现这个问题:小A随便进入几个其他人分享的其他页面,可以进行分享(定制的和非定制的)而且均无问题。

3、将网页A内的微信JS-SDK代码中config的debug设为true。小A打开网页时提示均为ok,没有出现错误,但是依然无法调出朋友列表分享。

4、项目组内一位胆大的小C退出了自己手机上的微信,登录到小A手机上的微信里打开网页A,发现无法分享。小A登回自己的微信,问题依旧。

5、使用微信web开发者工具访问网页A,可以正常调出分享界面以及分享定制信息。

代码:

我们使用了js函数来加载微信的JSSDK以及配置代码,有点类似于某些H5的游戏引擎:

    var loadSingleScript = function (src, callback) {
        var s = document.createElement('script');
        s.async = false;
        s.src = src;
        s.addEventListener('load', function () {
            s.parentNode.removeChild(s);
            s.removeEventListener('load', arguments.callee, false);
            callback();
        }, false);
        document.body.appendChild(s);
    };

然后在index页面上执行:

loadSingleScript("../../weixin/wxwp.js?v="+Math.random(),function(){});

加上版本号可防止不受到缓存影响

在 wxwp.js 里面,我们依葫芦画瓢加载微信的JS-SDK并做好相关初始化和配置:

var wxjsload = document.createElement('script');
wxjsload.async = false;
wxjsload.src = "http://res.wx.qq.com/open/js/jweixin-1.2.0.js";
wxjsload.addEventListener('load', function () {
            wxjsload.parentNode.removeChild(wxjsload);
            wxjsload.removeEventListener('load', arguments.callee, false);
            var xhr = new XMLHttpRequest();
            xhr.open('POST', '../../getwxconfigdata', true); //向服务器要签名
            xhr.addEventListener("load", function () {
                // 获得必要数据,初始化WX
                wx.config({.....});
                wx.ready(function(){
                    //初始化成功,定制分享信息(服务器请求返回的定制信息)
                    wx.onMenuShareAppMessage({....});
                    wx.onMenuShareTimeline({....});
                });
            });
            xhr.send(null);
            //
        }, false);
document.body.appendChild(wxjsload);

微信JSSDK配置里均按照文档的要求来写,权限接口啥的均无低级错误问题。

由于小A可以点击“分享到朋友圈”并正常调出对话框,而且定制信息也正常,所以我们不认为网页里的js代码出了严重的问题(比如签名之类的)。但是我们试图调整一下代码,发现如下规律:

1、将wx.onMenuShareAppMessage({....});注释掉,去掉定制信息后,小A马上就能分享给朋友了(虽然没有了定制的效果),一旦加上这行语句,小A就立马分享不了。

2、同一个域名下另外一个网页B也包含同一个公众号下的定制分享但不是使用上述wxwp.js进行配置的,小A可以正常打开网页并分享到朋友。这点排除了微信单独把小A+特定域名分享封号屏蔽的可能。

3、试图在wx.onMenuShareAppMessage({....});加入fail:function(){...};提醒是否有任何错误,结果未有任何提醒。

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

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

发布评论

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

评论(2

維他命╮ 2022-09-13 20:39:34

后续:这个问题会神奇地自己恢复,特别是用户反复登录到其他手机上再登回来就自动好了。现在严重怀疑是微信在特定情况下的BUG

巴黎盛开的樱花 2022-09-13 20:39:34

应该是自定义的设置内容不对:link、title、imgUrl、desc

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