如何解释一种微信网页点分享按钮发送给朋友却无反应的问题?
问题:
问题很简单,就是我们项目组做了一个网页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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
后续:这个问题会神奇地自己恢复,特别是用户反复登录到其他手机上再登回来就自动好了。现在严重怀疑是微信在特定情况下的BUG
应该是自定义的设置内容不对:link、title、imgUrl、desc