/**!
* 微信内置浏览器的Javascript API,功能包括:
*
* 1、分享到微信朋友圈
* 2、分享给微信好友
* 3、分享到腾讯微博
* 4、隐藏/显示右上角的菜单入口
* 5、隐藏/显示底部浏览器工具栏
* 6、获取当前的网络状态
* 7、调起微信客户端的图片播放组件
* 8、关闭公众平台Web页面
* 9、判断当前网页是否在微信内置浏览器中打开
* 10、支持WeixinApi的错误监控
* 11、发送电子邮件
* 12、禁止用户分享
**/(function(window) {"use strict";/**
* 定义WeixinApi*/
var WeixinApi ={
version:4.3};//将WeixinApi暴露到window下:全局可使用,对旧版本向下兼容
window.WeixinApi =WeixinApi;/// CommonJS /
if (typeof define === 'function' && (define.amd ||define.cmd)) {if(define.amd) {//AMD 规范,for:requirejs
define(function() {returnWeixinApi;
});
}else if(define.cmd) {//CMD 规范,for:seajs
define(function(require, exports, module) {
module.exports=WeixinApi;
});
}
}/**
* 对象简单继承,后面的覆盖前面的,继承深度:deep=1
* @private*/
var _extend = function() {var result ={}, obj, k;for (var i = 0, len = arguments.length; i < len; i++) {
obj=arguments[i];if (typeof obj === 'object') {for (k inobj) {
obj[k]&& (result[k] =obj[k]);
}
}
}returnresult;
};/**
* 内部私有方法,分享用
* @private*/
var _share = function(cmd, data, callbacks) {
callbacks= callbacks ||{};//分享过程中的一些回调
var progress = function(resp) {switch (true) {//用户取消
case /\:cancel$/i.test(resp.err_msg) :
callbacks.cancel&&callbacks.cancel(resp);break;//发送成功
case /\:(confirm|ok)$/i.test(resp.err_msg):
callbacks.confirm&&callbacks.confirm(resp);break;//fail 发送失败
case /\:fail$/i.test(resp.err_msg) :default:
callbacks.fail&&callbacks.fail(resp);break;
}//无论成功失败都会执行的回调
callbacks.all &&callbacks.all(resp);
};//执行分享,并处理结果
var handler = function(theData, argv) {//加工一下数据
if (cmd.menu == 'menu:share:timeline' ||(cmd.menu== 'general:share' && argv.shareTo == 'timeline')) {var title =theData.title;
theData.title= theData.desc ||title;
theData.desc= title ||theData.desc;
}//如果是收藏操作,并且在wxCallbacks中配置了favorite为false,则不执行回调
if (argv && (argv.shareTo == 'favorite' || argv.scene == 'favorite')) {if (callbacks.favorite === false) {
WeixinJSBridge.invoke('sendAppMessage', theData, newFunction());
}else{
WeixinJSBridge.invoke(cmd.action, theData, progress);
}
}else{//新的分享接口,单独处理
if (cmd.menu === 'general:share') {if (argv.shareTo === 'timeline') {
WeixinJSBridge.invoke('shareTimeline', theData, progress);
}else if (argv.shareTo === 'friend') {
WeixinJSBridge.invoke('sendAppMessage', theData, progress);
}else if (argv.shareTo === 'QQ') {
WeixinJSBridge.invoke('shareQQ', theDat