微信分享JS,监听分享点击、分享发送、分享完成、分享失败全过程

另外一个微信JS,功能很强大,只贴了链接,自己看: https://github.com/sofish/wechat.js

/**! * 微信内置浏览器的Javascript API,功能包括: * * 1、分享到微信朋友圈 * 2、分享给微信好友 * 3、分享到腾讯微博 * 4、隐藏/显示右上角的菜单入口 * 5、隐藏/显示底部浏览器工具栏 * 6、获取当前的网络状态 * 7、调起微信客户端的图片播放组件 * 8、关闭公众平台Web页面 * * @author zhaoxianlie() */var WeixinApi = (function () {"use strict";/*** 分享到微信朋友圈* @param{Object} data待分享的信息* @p-config {String} appId公众平台的appId(服务号可用)* @p-config {String} imageUrl 图片地址* @p-config {String} link链接地址* @p-config {String} desc描述* @p-config {String} title分享的标题** @param{Object} callbacks 相关回调方法* @p-config {Boolean} asyncready方法是否需要异步执行,默认false* @p-config {Function} ready(argv)就绪状态* @p-config {Function} dataLoaded(data)数据加载完成后调用,async为true时有用,,也可以为空* @p-config {Function} cancel(resp) 取消* @p-config {Function} fail(resp)失败* @p-config {Function} confirm(resp) 成功* @p-config {Function} all(resp)无论成功失败都会执行的回调*/function weixinShareTimeline(data, callbacks) {callbacks = callbacks || {};var shareTimeline = function (theData) {WeixinJSBridge.invoke('shareTimeline', {"appid":theData.appId ? theData.appId : '',"img_url":theData.imgUrl,"link":theData.link,"desc":theData.title,"title":theData.desc, // 注意这里要分享出去的内容是desc"img_width":"120","img_height":"120"}, function (resp) {switch (resp.err_msg) {// share_timeline:cancel 用户取消case 'share_timeline:cancel':callbacks.cancel && callbacks.cancel(resp);break;// share_timeline:fail 发送失败case 'share_timeline:fail':callbacks.fail && callbacks.fail(resp);break;// share_timeline:confirm 发送成功case 'share_timeline:confirm':case 'share_timeline:ok':callbacks.confirm && callbacks.confirm(resp);break;}// 无论成功失败都会执行的回调callbacks.all && callbacks.all(resp);});};WeixinJSBridge.on('menu:share:timeline', function (argv) {if (callbacks.async && callbacks.ready) {window["_wx_loadedCb_"] = callbacks.dataLoaded || new Function();if(window["_wx_loadedCb_"].toString().indexOf("_wx_loadedCb_") > 0) {window["_wx_loadedCb_"] = new Function();}callbacks.dataLoaded = function (newData) {window["_wx_loadedCb_"](newData);shareTimeline(newData);};// 然后就绪callbacks.ready && callbacks.ready(argv);} else {// 就绪状态callbacks.ready && callbacks.ready(argv);shareTimeline(data);}});}/*** 发送给微信上的好友* @param{Object} data待分享的信息* @p-config {String} appId公众平台的appId(服务号可用)* @p-config {String} imageUrl 图片地址* @p-config {String} link链接地址* @p-config {String} desc描述* @p-config {String} title分享的标题** @param{Object} callbacks 相关回调方法* @p-config {Boolean} asyncready方法是否需要异步执行,默认false* @p-config {Function} ready(argv)就绪状态* @p-config {Function} dataLoaded(data)数据加载完成后调用,async为true时有用,也可以为空* @p-config {Function} cancel(resp) 取消* @p-config {Function} fail(resp)失败* @p-config {Function} confirm(resp) 成功* @p-config {Function} all(resp)无论成功失败都会执行的回调*/function weixinSendAppMessage(data, callbacks) {callbacks = callbacks || {};var sendAppMessage = function (theData) {WeixinJSBridge.invoke('sendAppMessage', {"appid":theData.appId ? theData.appId : '',"img_url":theData.imgUrl,"link":theData.link,"desc":theData.desc,"title":theData.title,"img_width":"120","img_height":"120"}, function (resp) {switch (resp.err_msg) {// send_app_msg:cancel 用户取消case 'send_app_msg:cancel':callbacks.cancel && callbacks.cancel(resp);break;// send_app_msg:fail 发送失败case 'send_app_msg:fail':callbacks.fail && callbacks.fail(resp);break;// send_app_msg:confirm 发送成功case 'send_app_msg:confirm':case 'send_app_msg:ok':callbacks.confirm && callbacks.confirm(resp);break;}// 无论成功失败都会执行的回调callbacks.all && callbacks.all(resp);});};WeixinJSBridge.on('menu:share:appmessage', function (argv) {if (callbacks.async && callbacks.ready) {window["_wx_loadedCb_"] = callbacks.dataLoaded || new Function();if(window["_wx_loadedCb_"].toString().indexOf("_wx_loadedCb_") > 0) {window["_wx_loadedCb_"] = new Function();}callbacks.dataLoaded = function (newData) {window["_wx_loadedCb_"](newData);sendAppMessage(newData);};// 然后就绪callbacks.ready && callbacks.ready(argv);} else {// 就绪状态callbacks.ready && callbacks.ready(argv);sendAppMessage(data);}});}/*** 分享到腾讯微博* @param{Object} data待分享的信息* @p-config {String} link链接地址* @p-config {String} desc描述** @param{Object} callbacks 相关回调方法* @p-config {Boolean} asyncready方法是否需要异步执行,默认false* @p-config {Function} ready(argv)就绪状态* @p-config {Function} dataLoaded(data)数据加载完成后调用,async为true时有用,也可以为空* @p-config {Function} cancel(resp) 取消* @p-config {Function} fail(resp)失败* @p-config {Function} confirm(resp) 成功* @p-config {Function} all(resp)无论成功失败都会执行的回调*/function weixinShareWeibo(data, callbacks) {callbacks = callbacks || {};var shareWeibo = function (theData) {WeixinJSBridge.invoke('shareWeibo', {"content":theData.desc,"url":theData.link}, function (resp) {switch (resp.err_msg) {// share_weibo:cancel 用户取消case 'share_weibo:cancel':callbacks.cancel && callbacks.cancel(resp);break;// share_weibo:fail 发送失败case 'share_weibo:fail':callbacks.fail && callbacks.fail(resp);break;// share_weibo:confirm 发送成功case 'share_weibo:confirm':case 'share_weibo:ok':callbacks.confirm && callbacks.confirm(resp);break;}// 无论成功失败都会执行的回调callbacks.all && callbacks.all(resp);});};WeixinJSBridge.on('menu:share:weibo', function (argv) {if (callbacks.async && callbacks.ready) {window["_wx_loadedCb_"] = callbacks.dataLoaded || new Function();if(window["_wx_loadedCb_"].toString().indexOf("_wx_loadedCb_") > 0) {window["_wx_loadedCb_"] = new Function();}callbacks.dataLoaded = function (newData) {window["_wx_loadedCb_"](newData);shareWeibo(newData);};// 然后就绪callbacks.ready && callbacks.ready(argv);} else {// 就绪状态callbacks.ready && callbacks.ready(argv);shareWeibo(data);}});}/*** 调起微信Native的图片播放组件。* 这里必须对参数进行强检测,如果参数不合法,直接会导致微信客户端crash** @param {String} curSrc 当前播放的图片地址* @param {Array} srcList 图片地址列表*/function imagePreview(curSrc,srcList) {if(!curSrc || !srcList || srcList.length == 0) {return;}WeixinJSBridge.invoke('imagePreview', {'current' : curSrc,'urls' : srcList});}/*** 显示网页右上角的按钮*/function showOptionMenu() {WeixinJSBridge.call('showOptionMenu');}/*** 隐藏网页右上角的按钮*/function hideOptionMenu() {WeixinJSBridge.call('hideOptionMenu');}/*** 显示底部工具栏*/function showToolbar() {WeixinJSBridge.call('showToolbar');}/*** 隐藏底部工具栏*/function hideToolbar() {WeixinJSBridge.call('hideToolbar');}/*** 返回如下几种类型:** network_type:wifiwifi网络* network_type:edge非wifi,包含3G/2G* network_type:fail网络断开连接* network_type:wwan2g或者3g** 使用方法:* WeixinApi.getNetworkType(function(networkType){** });** @param callback*/function getNetworkType(callback) {if (callback && typeof callback == 'function') {WeixinJSBridge.invoke('getNetworkType', {}, function (e) {// 在这里拿到e.err_msg,这里面就包含了所有的网络类型callback(e.err_msg);});}}/*** 关闭当前微信公众平台页面*/function closeWindow() {WeixinJSBridge.call("closeWindow");}/*** 当页面加载完毕后执行,使用方法:* WeixinApi.ready(function(Api){*// 从这里只用Api即是WeixinApi* });* @param readyCallback*/function wxJsBridgeReady(readyCallback) {if (readyCallback && typeof readyCallback == 'function') {var Api = this;var wxReadyFunc = function () {readyCallback(Api);};if (typeof window.WeixinJSBridge == "undefined"){if (document.addEventListener) {document.addEventListener('WeixinJSBridgeReady', wxReadyFunc, false);} else if (document.attachEvent) {document.attachEvent('WeixinJSBridgeReady', wxReadyFunc);document.attachEvent('onWeixinJSBridgeReady', wxReadyFunc);}}else{wxReadyFunc();}}}return {version:"1.8",ready:wxJsBridgeReady,shareToTimeline :weixinShareTimeline,shareToWeibo :weixinShareWeibo,shareToFriend :weixinSendAppMessage,showOptionMenu :showOptionMenu,hideOptionMenu :hideOptionMenu,showToolbar:showToolbar,hideToolbar:hideToolbar,getNetworkType :getNetworkType,imagePreview :imagePreview,closeWindow:closeWindow};})();

一个人,一条路,人在途中,心随景动,

微信分享JS,监听分享点击、分享发送、分享完成、分享失败全过程

相关文章:

你感兴趣的文章:

标签云: