账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    如何解释一种微信网页点分享按钮发送给朋友却无反应的问题?
    33
    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(){...};提醒是否有任何错误,结果未有任何提醒。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部