最近在做微信app,需要用到分享功能,横观文档,压根没有提过分享功能自定义的事情……后来在搜索中找到一些前辈的文章,使用WeixinJSBridge这个接口实现,但是,我非常非常好奇,这是什么渠道透露出来的 ||_||
var options = { "appid": '', //可以不设置 但必须存在这属性 "img_url": '', //分享图片的路径 "img_width": "200", "img_height": "200", "link": '', //分享的链接 "desc": '', //分享的描述文字 (分享到朋友圈没有描述) "title": '' //分享的标题 }; function shareFriend() {
//分享给朋友 WeixinJSBridge.invoke('sendAppMessage',options, function(res) { //_report('send_msg', res.err_msg); }) } function shareTimeline() {
//分享到朋友圈 WeixinJSBridge.invoke('shareTimeline',options, function(res) { //_report('timeline', res.err_msg); }); } function shareWeibo() {
//分享到腾讯微薄 WeixinJSBridge.invoke('shareWeibo',{ "content": options.descContent, "url": options.lineLink, }, function(res) { //_report('weibo', res.err_msg); }); } // 当微信内置浏览器完成内部初始化后会触发WeixinJSBridgeReady事件。 document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { // 发送给好友 WeixinJSBridge.on('menu:share:appmessage', function(argv){ shareFriend(); }); // 分享到朋友圈 WeixinJSBridge.on('menu:share:timeline', function(argv){ //shareTimeline();return false; //返回false只是本人代码习惯,没有return也可以,只要不设置执行的方法,就不会触发分享。 }); // 分享到微博 WeixinJSBridge.on('menu:share:weibo', function(argv){ //shareWeibo();return false; }); }, false);
在实际开发中,使用的是seajs的模块化管理,如果在模块里面执行WeixinJSBridge的事件绑定,这是有问题的。经过多次试验,WeixinJSBridge是会在seajs引入模块之前加载完毕,也就是绑定WeixinJSBridgeReady事件的时候,WeixinJSBridge已经加载完毕,过了ready的时间,就不会触发WeixinJSBridgeReady的事件。也就是要使用WeixinJSBridge就必须保证绑定事件是同步的,即同步执行。