关于WinXinApi的 优化(做出公用使用方法)
1. 引用WeixinApi,
参考资料:https://github.com/zxlie/WeixinApi;
在使用demo中,关于使用方法,已经很详细了(具体使用效果用的比较好,所以坚持决定使用WeixinApi),在工作中,遇到这种问题:
需要在使用微信api做出个公用方法,传入参数值,既可以使用,但是weixinapi内的使用方法,只能传入一组数据,
为了更方便使用,优化WeixinApi的ready方法,具体如下:
WeixinApi.ready = function (readyCallback, wxData) {
if (readyCallback && typeof readyCallback == 'function') {
var Api = this;
var wxReadyFunc = function () {
readyCallback(Api,wxData);
};
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();
}
}
};
在使用weixinapi的ready()方法时,传入,data数据,然后再回调到具体方法内(readyCallback);
然后页面使用公用方法:
function wxShare(img, title, desc, link) {
var wxData = {
"appId": "wx280a7354c12818eb", // 服务号可以填写appId
"imgUrl": "http://" + img,
"link": "http://" + link,
"desc": desc,
"title": title
};
var share = function (Api, wxData) {
// 微信分享的数据
// 分享的回调
var wxCallbacks = {
// 收藏操作是否触发回调,默认是开启的
favorite: false,
// 用async模式,表示每次分享之前,都需要更新分享内容
async: true,
// 分享操作开始之前
ready: function () { // 你可以在这里对分享的数据进行重组 //alert("准备分享"); this.dataLoaded({ title: title, desc: desc });
},
// 分享被用户自动取消 cancel: function (resp) { // 你可以在你的页面上给用户一个小Tip,为什么要取消呢? //alert("分享被取消,msg=" + resp.err_msg); }, // 分享失败了 fail: function (resp) { // 分享失败了,是不是可以告诉用户:不要紧,可能是网络问题,一会儿再试试? // alert("分享失败,msg=" + resp.err_msg); }, // 分享成功 confirm: function (resp) { // 分享成功了,我们是不是可以做一些分享统计呢? //alert("分享成功,msg=" + resp.err_msg); }, // 整个分享过程结束 all: function (resp, shareTo) { // 如果你做的是一个鼓励用户进行分享的产品,在这里是不是可以给用户一些反馈了? //alert("分享" + (shareTo ? "到" + shareTo : "") + "结束,msg=" + resp.err_msg); } };
// 用户点开右上角popup菜单后,点击分享给好友,会执行下面这个代码 Api.shareToFriend(wxData, wxCallbacks);
// 点击分享到朋友圈,会执行下面这个代码 Api.shareToTimeline(wxData, wxCallbacks);
// 点击分享到腾讯微博,会执行下面这个代码 Api.shareToWeibo(wxData, wxCallbacks);
// iOS上,可以直接调用这个API进行分享,一句话搞定 Api.generalShare(wxData, wxCallbacks);
// 有可能用户是直接用微信“扫一扫”打开的,这个情况下,optionMenu是off状态 // 为了方便用户测试,我先来trigger show一下 var elOptionMenu = document.getElementById('optionMenu'); elOptionMenu.click(); // 先隐藏 elOptionMenu.click(); // 再显示 };
WeixinApi.ready(share, wxData); }
页面使用方法:
wxShare("2015images/share_JS.png", "分享测试", "三星正南就要过年", "lianjie.html");
浙公网安备 33010602011771号