UNPKG

yqb

Version:

Static Package Manager

638 lines (567 loc) 27.8 kB
// http://res.wx.qq.com/open/js/jweixin-1.0.0.js !function(a,b){"function"==typeof define&&(define.amd||define.cmd)?define(function(){return b(a)}):b(a,!0)}(this,function(a,b){function c(b,c,d){a.WeixinJSBridge?WeixinJSBridge.invoke(b,e(c),function(a){g(b,a,d)}):j(b,d)}function d(b,c,d){a.WeixinJSBridge?WeixinJSBridge.on(b,function(a){d&&d.trigger&&d.trigger(a),g(b,a,c)}):d?j(b,d):j(b,c)}function e(a){return a=a||{},a.appId=B.appId,a.verifyAppId=B.appId,a.verifySignType="sha1",a.verifyTimestamp=B.timestamp+"",a.verifyNonceStr=B.nonceStr,a.verifySignature=B.signature,a}function f(a){return{timeStamp:a.timestamp+"",nonceStr:a.nonceStr,"package":a.package,paySign:a.paySign,signType:a.signType||"SHA1"}}function g(a,b,c){var d,e,f;switch(delete b.err_code,delete b.err_desc,delete b.err_detail,d=b.errMsg,d||(d=b.err_msg,delete b.err_msg,d=h(a,d),b.errMsg=d),c=c||{},c._complete&&(c._complete(b),delete c._complete),d=b.errMsg||"",B.debug&&!c.isInnerInvoke&&alert(JSON.stringify(b)),e=d.indexOf(":"),f=d.substring(e+1)){case"ok":c.success&&c.success(b);break;case"cancel":c.cancel&&c.cancel(b);break;default:c.fail&&c.fail(b)}c.complete&&c.complete(b)}function h(a,b){var e,f,c=a,d=p[c];return d&&(c=d),e="ok",b&&(f=b.indexOf(":"),e=b.substring(f+1),"confirm"==e&&(e="ok"),"failed"==e&&(e="fail"),-1!=e.indexOf("failed_")&&(e=e.substring(7)),-1!=e.indexOf("fail_")&&(e=e.substring(5)),e=e.replace(/_/g," "),e=e.toLowerCase(),("access denied"==e||"no permission to execute"==e)&&(e="permission denied"),"config"==c&&"function not exist"==e&&(e="ok"),""==e&&(e="fail")),b=c+":"+e}function i(a){var b,c,d,e;if(a){for(b=0,c=a.length;c>b;++b)d=a[b],e=o[d],e&&(a[b]=e);return a}}function j(a,b){if(!(!B.debug||b&&b.isInnerInvoke)){var c=p[a];c&&(a=c),b&&b._complete&&delete b._complete,console.log('"'+a+'",',b||"")}}function k(){if(!(u||B.debug||"6.0.2">y||A.systemType<0)){var b=new Image;A.appId=B.appId,A.initTime=z.initEndTime-z.initStartTime,A.preVerifyTime=z.preVerifyEndTime-z.preVerifyStartTime,E.getNetworkType({isInnerInvoke:!0,success:function(a){A.networkType=a.networkType;var c="https://open.weixin.qq.com/sdk/report?v="+A.version+"&o="+A.isPreVerifyOk+"&s="+A.systemType+"&c="+A.clientVersion+"&a="+A.appId+"&n="+A.networkType+"&i="+A.initTime+"&p="+A.preVerifyTime+"&u="+A.url;b.src=c}})}}function l(){return(new Date).getTime()}function m(b){v&&(a.WeixinJSBridge?b():q.addEventListener&&q.addEventListener("WeixinJSBridgeReady",b,!1))}function n(){E.invoke||(E.invoke=function(b,c,d){a.WeixinJSBridge&&WeixinJSBridge.invoke(b,e(c),d)},E.on=function(b,c){a.WeixinJSBridge&&WeixinJSBridge.on(b,c)})}var o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E;if(!a.jWeixin)return o={config:"preVerifyJSAPI",onMenuShareTimeline:"menu:share:timeline",onMenuShareAppMessage:"menu:share:appmessage",onMenuShareQQ:"menu:share:qq",onMenuShareWeibo:"menu:share:weiboApp",onMenuShareQZone:"menu:share:QZone",previewImage:"imagePreview",getLocation:"geoLocation",openProductSpecificView:"openProductViewWithPid",addCard:"batchAddCard",openCard:"batchViewCard",chooseWXPay:"getBrandWCPayRequest"},p=function(){var b,a={};for(b in o)a[o[b]]=b;return a}(),q=a.document,r=q.title,s=navigator.userAgent.toLowerCase(),t=navigator.platform.toLowerCase(),u=!(!t.match(/mac/i)&&!t.match(/win/i)),v=-1!=s.indexOf("micromessenger"),w=-1!=s.indexOf("android"),x=-1!=s.indexOf("iphone")||-1!=s.indexOf("ipad"),y=function(){var a=s.match(/micromessenger\/(\d+\.\d+\.\d+)/)||s.match(/micromessenger\/(\d+\.\d+)/);return a?a[1]:""}(),z={initStartTime:l(),initEndTime:0,preVerifyStartTime:0,preVerifyEndTime:0},A={version:1,appId:"",initTime:0,preVerifyTime:0,networkType:"",isPreVerifyOk:1,systemType:x?1:w?2:-1,clientVersion:y,url:encodeURIComponent(location.href)},B={},C={_completes:[]},D={state:0,res:{}},m(function(){z.initEndTime=l()}),E={config:function(a){B=a,j("config",a);var b=B.check===!1?!1:!0;m(function(){var a,d,e;if(b)c(o.config,{verifyJsApiList:i(B.jsApiList)},function(){C._complete=function(a){z.preVerifyEndTime=l(),D.state=1,D.res=a},C.success=function(){A.isPreVerifyOk=0},C.fail=function(a){C._fail?C._fail(a):D.state=-1};var a=C._completes;return a.push(function(){k()}),C.complete=function(){for(var c=0,d=a.length;d>c;++c)a[c]();C._completes=[]},C}()),z.preVerifyStartTime=l();else{for(D.state=1,a=C._completes,d=0,e=a.length;e>d;++d)a[d]();C._completes=[]}}),B.beta&&n()},ready:function(a){0!=D.state?a():(C._completes.push(a),!v&&B.debug&&a())},error:function(a){"6.0.2">y||(-1==D.state?a(D.res):C._fail=a)},checkJsApi:function(a){var b=function(a){var c,d,b=a.checkResult;for(c in b)d=p[c],d&&(b[d]=b[c],delete b[c]);return a};c("checkJsApi",{jsApiList:i(a.jsApiList)},function(){return a._complete=function(a){if(w){var c=a.checkResult;c&&(a.checkResult=JSON.parse(c))}a=b(a)},a}())},onMenuShareTimeline:function(a){d(o.onMenuShareTimeline,{complete:function(){c("shareTimeline",{title:a.title||r,desc:a.title||r,img_url:a.imgUrl||"",link:a.link||location.href,type:a.type||"link",data_url:a.dataUrl||""},a)}},a)},onMenuShareAppMessage:function(a){d(o.onMenuShareAppMessage,{complete:function(){c("sendAppMessage",{title:a.title||r,desc:a.desc||"",link:a.link||location.href,img_url:a.imgUrl||"",type:a.type||"link",data_url:a.dataUrl||""},a)}},a)},onMenuShareQQ:function(a){d(o.onMenuShareQQ,{complete:function(){c("shareQQ",{title:a.title||r,desc:a.desc||"",img_url:a.imgUrl||"",link:a.link||location.href},a)}},a)},onMenuShareWeibo:function(a){d(o.onMenuShareWeibo,{complete:function(){c("shareWeiboApp",{title:a.title||r,desc:a.desc||"",img_url:a.imgUrl||"",link:a.link||location.href},a)}},a)},onMenuShareQZone:function(a){d(o.onMenuShareQZone,{complete:function(){c("shareQZone",{title:a.title||r,desc:a.desc||"",img_url:a.imgUrl||"",link:a.link||location.href},a)}},a)},startRecord:function(a){c("startRecord",{},a)},stopRecord:function(a){c("stopRecord",{},a)},onVoiceRecordEnd:function(a){d("onVoiceRecordEnd",a)},playVoice:function(a){c("playVoice",{localId:a.localId},a)},pauseVoice:function(a){c("pauseVoice",{localId:a.localId},a)},stopVoice:function(a){c("stopVoice",{localId:a.localId},a)},onVoicePlayEnd:function(a){d("onVoicePlayEnd",a)},uploadVoice:function(a){c("uploadVoice",{localId:a.localId,isShowProgressTips:0==a.isShowProgressTips?0:1},a)},downloadVoice:function(a){c("downloadVoice",{serverId:a.serverId,isShowProgressTips:0==a.isShowProgressTips?0:1},a)},translateVoice:function(a){c("translateVoice",{localId:a.localId,isShowProgressTips:0==a.isShowProgressTips?0:1},a)},chooseImage:function(a){c("chooseImage",{scene:"1|2",count:a.count||9,sizeType:a.sizeType||["original","compressed"],sourceType:a.sourceType||["album","camera"]},function(){return a._complete=function(a){if(w){var b=a.localIds;b&&(a.localIds=JSON.parse(b))}},a}())},previewImage:function(a){c(o.previewImage,{current:a.current,urls:a.urls},a)},uploadImage:function(a){c("uploadImage",{localId:a.localId,isShowProgressTips:0==a.isShowProgressTips?0:1},a)},downloadImage:function(a){c("downloadImage",{serverId:a.serverId,isShowProgressTips:0==a.isShowProgressTips?0:1},a)},getNetworkType:function(a){var b=function(a){var c,d,e,b=a.errMsg;if(a.errMsg="getNetworkType:ok",c=a.subtype,delete a.subtype,c)a.networkType=c;else switch(d=b.indexOf(":"),e=b.substring(d+1)){case"wifi":case"edge":case"wwan":a.networkType=e;break;default:a.errMsg="getNetworkType:fail"}return a};c("getNetworkType",{},function(){return a._complete=function(a){a=b(a)},a}())},openLocation:function(a){c("openLocation",{latitude:a.latitude,longitude:a.longitude,name:a.name||"",address:a.address||"",scale:a.scale||28,infoUrl:a.infoUrl||""},a)},getLocation:function(a){a=a||{},c(o.getLocation,{type:a.type||"wgs84"},function(){return a._complete=function(a){delete a.type},a}())},hideOptionMenu:function(a){c("hideOptionMenu",{},a)},showOptionMenu:function(a){c("showOptionMenu",{},a)},closeWindow:function(a){a=a||{},c("closeWindow",{},a)},hideMenuItems:function(a){c("hideMenuItems",{menuList:a.menuList},a)},showMenuItems:function(a){c("showMenuItems",{menuList:a.menuList},a)},hideAllNonBaseMenuItem:function(a){c("hideAllNonBaseMenuItem",{},a)},showAllNonBaseMenuItem:function(a){c("showAllNonBaseMenuItem",{},a)},scanQRCode:function(a){a=a||{},c("scanQRCode",{needResult:a.needResult||0,scanType:a.scanType||["qrCode","barCode"]},function(){return a._complete=function(a){var b,c;x&&(b=a.resultStr,b&&(c=JSON.parse(b),a.resultStr=c&&c.scan_code&&c.scan_code.scan_result))},a}())},openProductSpecificView:function(a){c(o.openProductSpecificView,{pid:a.productId,view_type:a.viewType||0,ext_info:a.extInfo},a)},addCard:function(a){var e,f,g,h,b=a.cardList,d=[];for(e=0,f=b.length;f>e;++e)g=b[e],h={card_id:g.cardId,card_ext:g.cardExt},d.push(h);c(o.addCard,{card_list:d},function(){return a._complete=function(a){var c,d,e,b=a.card_list;if(b){for(b=JSON.parse(b),c=0,d=b.length;d>c;++c)e=b[c],e.cardId=e.card_id,e.cardExt=e.card_ext,e.isSuccess=e.is_succ?!0:!1,delete e.card_id,delete e.card_ext,delete e.is_succ;a.cardList=b,delete a.card_list}},a}())},chooseCard:function(a){c("chooseCard",{app_id:B.appId,location_id:a.shopId||"",sign_type:a.signType||"SHA1",card_id:a.cardId||"",card_type:a.cardType||"",card_sign:a.cardSign,time_stamp:a.timestamp+"",nonce_str:a.nonceStr},function(){return a._complete=function(a){a.cardList=a.choose_card_info,delete a.choose_card_info},a}())},openCard:function(a){var e,f,g,h,b=a.cardList,d=[];for(e=0,f=b.length;f>e;++e)g=b[e],h={card_id:g.cardId,code:g.code},d.push(h);c(o.openCard,{card_list:d},a)},chooseWXPay:function(a){c(o.chooseWXPay,f(a),a)}},b&&(a.wx=a.jWeixin=E),E}); /* * 分享组件 * author: <%= author %> * version: <%= version %> * website: http://www.431103.com */ /* <div class="paf_share_module" style=" width: 100%; height: 45px; left: 0; top: 50%;" data-shareUrl="https://www.431103.com/" data-shareContent="自定义分享内容,字数控制在20个左右有,超出部分文字不会被显示" data-shareTitle="自定义分享标题" data-sharePicUrl="app/images/icon.png" data-needUid="true" data-share="true" onclick="TJ.click('Event_OPSHARE_e79e955a-eacc-4965-af7e-dc791d0797bf')"> </div> */ (function($, window, document, undefined) { // 定义一个插件 Plugin var pluginName = "share", defaults = { title: "分享标题", desc: "分享描述", link: "分享链接", icon: "", wxApi: "https://mobile.1qianbao.com/mtp-web/h5/op_wechat_generateJsTicket.jsonp", cmsPagePath: '', onBefore: null, onAfter: null }; // 插件的私有方法 var tools = { // 非信任域,自动开启调试模式 isDomain: function() { var url = document.URL; if (url.match(/1qianbao.com/i) != '1qianbao.com') { return true; } else { return false; } }, /* * 判断浏览器类型 * return wx 代表微信浏览器,1qianbao 代表壹钱包,false 其他浏览器 */ isBrowser: function() { var ua = navigator.userAgent.toLowerCase(); if (ua.match(/MicroMessenger/i) == 'micromessenger') { return 'wx'; } else if (ua.match(/1qianbao/i) == '1qianbao') { return '1qianbao'; } else return false; }, // 截取url路径 getUrlpath: function(L) { var arr = location.pathname.split('/'); if (L) { arr.splice(arr.length - 2, arr.length - 1); } else { arr.splice(arr.length - 1, arr.length); } return location.origin + arr.join('/'); }, // 取出url原始参数 // 获取url参数,支持?# getUrlParms: function() { var args = new Object(); var query = location.search.substring(1); if (query == "") { query = location.hash.substring(1); } var pairs = query.split("&"); for (var i = 0; i < pairs.length; i++) { var pos = pairs[i].indexOf('='); if (pos == -1) continue; var argname = pairs[i].substring(0, pos); var value = pairs[i].substring(pos + 1); args[argname] = unescape(value); } return args; }, getShareParams: function() { var activityId = this.getUrlParms()['activityId'], newCustomerId = this.getUrlParms()['newCustomerId'], mcId = this.getUrlParms()['WT.mc_id']; var param = ['?activityId=', activityId, '&newCustomerId=', newCustomerId]; return param.join(''); } }; /** * 插件实例化部分,初始化时调用的代码可以放这里 * @param element 传入jq对象的选择器,如$("#share_plugin").plugin(),其中$("#share_plugin")既是element * @param options 插件参数 */ function Plugin(element, options) { // 将dom jquery对象赋值给插件,方便后续调用 this.element = $(element); // 将插件的默认参数及用户定义的参数合并到一个新的obj里 this.settings = $.extend({}, defaults, options); this.settings.link = this.element.data('shareurl') + tools.getShareParams(); this.settings.title = this.element.data('sharetitle'); this.settings.desc = this.element.data('sharecontent'); // 是相对路径需转换成绝对路径 this.settings.icon = tools.getUrlpath() + this.element.data('sharepicurl'); //初始化调用 this.init(); } Plugin.prototype = { init: function() { var self = this, $e = self.element; self._setWeixinSDK(); this.hide(); $e.on('click' + '.' + pluginName, function(e) { e.preventDefault(); if (tools.isBrowser() == 'wx') { self.showWeixinTip(); } else { self.show(); } e.stopPropagation(); }); }, sharebox: function() { var self = this; var wechat = self.settings.cmsPagePath + __uri("/app/images/icon_weixinquan.jpg"), weixin = self.settings.cmsPagePath + __uri("/app/images/icon_weixin.jpg"), weibo = self.settings.cmsPagePath + __uri("/app/images/icon_weibo.jpg"), qzone = self.settings.cmsPagePath + __uri("/app/images/icon_qzone.jpg"); if (!self.share_pop) { self.share_pop = $( '<div class="paf-share">' + '<div class="paf-share-box animated zoomIn">' + '<div class="paf-share-header">' + '<button type="button" class="paf-close">' + '<span>&times;</span>' + '</button>' + '</div>' + '<div class="paf-share-body"></div>' + '<div class="paf-share-footer">' + '<h4 class="paf-share-title">分享到</h4>' + '<ul class="paf-share-list">' + '<li id="shareTo_wechat">' + '<img src="' + wechat + '">朋友圈' + '</li>' + '<li id="shareTo_wechatFriend">' + '<img src="' + weixin + '">微信好友' + '</li>' + '<li id="shareTo_sinaWeibo">' + '<img src="' + weibo + '">新浪微博' + '</li>' + '<li id="shareTo_qZone">' + '<img src="' + qzone + '">QQ空间' + '</li>' + '</ul>' + '</div>' + '</div><!-- 二维码 -->' + '<div class="paf-qrcode">' + '<div class="paf-qrcode-content" id="code"></div>' + '<div class="paf-qrcode-desc">请长按二维码,保存图片后用微信扫描二维码打开!</div>' + '</div>' + '</div>' ); } return self.share_pop; }, show: function() { var self = this, share_pop = self.sharebox(), $win = $(window); // callback self.settings.onBefore && self.settings.onBefore(); share_pop.css('display', '-webkit-box').hide(); share_pop.find('.paf-share-body').html(self.content()); share_pop.appendTo('body').stop(true, true).fadeIn('500'); self._bindEvent(); }, hide: function() { var share_pop = this.sharebox(); share_pop.stop(true, true).fadeIn('500'); $(share_pop).remove(); }, content: function() { var self = this; var content; content = '<img class="paf-share-icon" src="' + self.settings.icon + '">' + self.settings.desc; return content; }, _bindEvent: function() { var self = this; var share_pop = self.sharebox(); // 关闭按钮 share_pop.find('.paf-close').on('click', function(e) { self.hide(); }); share_pop.find('.paf-share-list li').on('click', function(e) { var _this = this, $_this = $(_this), index = $_this.index(); switch (index) { case 0: self.onShareWeixin(); break; case 1: self.onShareWechat(); break; case 2: self.onShareWeibo(); break; case 3: self.onShareQZone(); break; } }); }, }; // 分享到QQ Plugin.prototype.onShareQQ = function() {}; // 分享到QQ空间 Plugin.prototype.onShareQZone = function() { this._shareQZone(); }; // 分享到微博 Plugin.prototype.onShareWeibo = function() { this._shareWeibo(); }; // 分享到朋友圈 Plugin.prototype.onShareWechat = function() { this._shareWechat(); }; // 分享到微信好友 Plugin.prototype.onShareWeixin = function() { this._shareWeixin(); }; Plugin.prototype._shareQZone = function() { var self = this; var type = tools.isBrowser(); switch (type) { case 'wx': // 微信内部分享SDK组件 self._getWeixinSDK(3); break; case '1qianbao': // 壹钱包内部分享SDK组件 self._getYiQianBaoSDK(3); break; default: // 其他分享SDK组件 self._getOtherSDK(3); break; } }; Plugin.prototype._shareWeibo = function() { var self = this; var type = tools.isBrowser(); switch (type) { case 'wx': // 微信内部分享SDK组件 self._getWeixinSDK(2); break; case '1qianbao': // 壹钱包内部分享SDK组件 self._getYiQianBaoSDK(2); break; default: // 其他分享SDK组件 self._getOtherSDK(2); break; } }; Plugin.prototype._shareWechat = function() { var self = this; var type = tools.isBrowser(); switch (type) { case 'wx': // 微信内部分享SDK组件 self._getWeixinSDK(1); break; case '1qianbao': // 壹钱包内部分享SDK组件 self._getYiQianBaoSDK(1); break; default: // 其他分享SDK组件 self._getOtherSDK(1); break; } }; Plugin.prototype._shareWeixin = function() { var self = this; var type = tools.isBrowser(); switch (type) { case 'wx': // 微信内部分享SDK组件 self._getWeixinSDK(0); break; case '1qianbao': // 壹钱包内部分享SDK组件 self._getYiQianBaoSDK(0); break; default: // 其他分享SDK组件 self._getOtherSDK(0); break; } }; /* * 微信内部分享SDK组件 * 0:分享到朋友圈 * 1:分享给朋友 * 2:分享到腾讯微博 * 3: 分享到QQ空间 */ Plugin.prototype._getWeixinSDK = function(type) { var self = this; switch (type) { case 0: // 获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: self.settings.title, // 分享标题 link: self.settings.link, // 分享链接 imgUrl: self.settings.icon, // 分享图标 success: function() { Agent.customizeEvent('sucWechat', paramsHashMap, ''); }, cancel: function() { Agent.customizeEvent('failWechat', paramsHashMap, ''); } }); break; case 1: // 获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: self.settings.title, // 分享标题 desc: self.settings.desc, // 分享描述 link: self.settings.link, // 分享链接 imgUrl: self.settings.icon, // 分享图标 type: '', // 分享类型,music、video或link,不填默认为link dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空 success: function() { Agent.customizeEvent('sucWechatFriend', paramsHashMap, ''); }, cancel: function() { Agent.customizeEvent('failWechatFriend', paramsHashMap, ''); } }); break; case 2: // 获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: self.settings.title, // 分享标题 desc: self.settings.desc, // 分享描述 link: self.settings.link, // 分享链接 imgUrl: self.settings.icon, // 分享图标 success: function() { Agent.customizeEvent('sucQQWeibo', paramsHashMap, ''); }, cancel: function() { Agent.customizeEvent('failQQWeibo', paramsHashMap, ''); } }); break; case 3: // 获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: self.settings.title, // 分享标题 desc: self.settings.desc, // 分享描述 link: self.settings.link, // 分享链接 imgUrl: self.settings.icon, // 分享图标 success: function() { // 用户确认分享后执行的回调函数 }, cancel: function() { // 用户取消分享后执行的回调函数 } }); break; case 4: // 获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: self.settings.title, // 分享标题 desc: self.settings.desc, // 分享描述 link: self.settings.link, // 分享链接 imgUrl: self.settings.icon, // 分享图标 success: function() { Agent.customizeEvent('sucQQ', paramsHashMap, ''); }, cancel: function() { Agent.customizeEvent('failQQ', paramsHashMap, ''); } }); break; default: break; } }; /* * 壹钱包内部分享SDK组件 * 0:分享到朋友圈 * 1:分享给朋友 * 2:分享到腾讯微博 * 3: 分享到QQ空间 */ Plugin.prototype._getYiQianBaoSDK = function(type) { var self = this; var url = "ewap://1qianbao/share"; switch (type) { case 0: case 1: url = url + "?to=" + type + "&wx_url=" + self.settings.link + "&wx_title=" + self.settings.title + "&wx_desc=" + self.settings.desc + "&wx_icon=" + self.settings.icon; break; case 2: url = url + "?to=" + type + "&wb_content=" + self.settings.desc + self.settings.link + "&wb_img=" + self.settings.icon; break; case 3: url = url + "?to=" + type + "&qzone_url=" + self.settings.link + "&qzone_title=" + self.settings.title + "&qzone_summary=" + self.settings.desc + "&qzone_img=" + self.settings.icon; break; case 4: url = type; break; } window.location.href = url; }; /* * 其他分享SDK组件 * 0:分享到朋友圈 * 1:分享给朋友 * 2:分享到腾讯微博 * 3: 分享到QQ空间 */ Plugin.prototype._getOtherSDK = function(type) { var self = this; var url = type; switch (type) { case 0: case 1: $('.paf-qrcode-content').qrcode(this.settings.link); // var canvas = document.getElementById('canvas'); var canvas = $('.paf-qrcode-content canvas')[0]; $('.paf-qrcode-content').html('<img style="display:inline;" src="'+canvas.toDataURL('image/png')+'">'); $('.paf-qrcode').show(); $('.paf-qrcode').on('click', function(e) { e.preventDefault(); e.stopPropagation(); $(this).hide(); $('.paf-qrcode-content').html(''); }); return false; break; case 2: url = 'http://service.weibo.com/share/share.php?url='; url += encodeURIComponent(self.settings.link) + '&title='; url += encodeURIComponent(self.settings.desc) + '&pic='; url += self.settings.icon; url += '&appkey=2992571369'; break; case 3: url = 'http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url='; url += encodeURI(self.settings.link) + '&title='; url += encodeURI(self.settings.title) + '&desc='; url += encodeURI(self.settings.desc) + '&pics='; url += self.settings.icon; break; } window.location.href = url; } // 发起微信SDK请求 Plugin.prototype._setWeixinSDK = function() { var type = tools.isBrowser(); if (type != 'wx') return; var self = this; var url = self.settings.wxApi + '?url=' + encodeURIComponent(window.location.href.split('#')[0]); $.ajax({ url: url, dataType: 'jsonp', contentType: "application/json", success: function(data) { // 通过config接口注入权限验证配置 wx.config({ debug: tools.isDomain(), // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: data.appid, // 必填,公众号的唯一标识 timestamp: data.timestamp, // 必填,生成签名的时间戳 nonceStr: data.nonceStr, // 必填,生成签名的随机串 signature: data.signature, // 必填,签名 jsApiList: ["onMenuShareTimeline", "onMenuShareAppMessage", "onMenuShareQQ", "onMenuShareWeibo"] // 必填,需要使用的JS接口列表 }); wx.ready(function() { // 分享到朋友圈 self._getWeixinSDK(0); // 分享给朋友 self._getWeixinSDK(1); // 分享到腾讯微博 self._getWeixinSDK(2); // 分享到QQ空间 self._getWeixinSDK(3); // 分享到QQ self._getWeixinSDK(4); }); wx.error(function() { console.log("\u5FAE\u4FE1\u4E0D\u548C\u6211\u4EEC\u73A9\u4E86\uFF0C\u600E\u4E48\u529E\3F"); }); }, error: function(data) { console.log("\u670D\u52A1\u5668\u751F\u6C14\u4E86\uFF0C\u4E0D\u548C\u5FAE\u4FE1\u73A9\u800D\u4E86\21"); } }); }; Plugin.prototype.showWeixinTip = function() { var tipIMG = this.settings.cmsPagePath + __uri('/app/images/wechat-tip.png'); var tips = $('<div><img src="' + tipIMG + '" width="100%"></div>').css({ 'position': 'fixed', 'left': '0', 'top': '0', 'bottom': '0', 'right': '0', 'zIndex': '999', 'backgroundColor': 'rgba(0,0,0,.7)', 'backgroundRepeat': 'no-repeat', 'backgroundSize': 'contain' }); $('body').append(tips).click(function() { tips.remove(); }); }; $[pluginName] = $.fn[pluginName] = function(options) { var args = arguments; if (options === undefined || typeof options === 'object') { if (!(this instanceof $)) { $.extend(defaults, options); } return this.each(function() { if (!$.data(this, 'plugin_' + pluginName)) { $.data(this, 'plugin_' + pluginName, new Plugin(this, options)); } }); if (!$.data(this, 'plugin_' + pluginName)) { return $.data(this, 'plugin_' + pluginName, new Plugin(this, options)); } } else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') { var returns; this.each(function() { var instance = $.data(this, 'plugin_' + pluginName); if (!instance) { instance = $.data(this, 'plugin_' + pluginName, new Plugin( this, options)); } if (instance instanceof Plugin && typeof instance[options] === 'function') { returns = instance[options].apply(instance, Array.prototype.slice .call(args, 1)); } if (options === 'destroy') { $.data(this, 'plugin_' + pluginName, null); } }); return returns !== undefined ? returns : this; } }; $(function() { return new Plugin($('[data-share]')); }); })(jQuery, window, document);