关于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");

 

posted on 2014-12-29 15:55  生活要有态度  阅读(358)  评论(0编辑  收藏  举报

导航