WeixinApi.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. var WeixinApi = (function () {
  2. "use strict";
  3. function weixinShareTimeline(data, callbacks) {
  4. callbacks = callbacks || {};
  5. var shareTimeline = function (theData) {
  6. WeixinJSBridge.invoke('shareTimeline', {
  7. "appid":theData.appId ? theData.appId : '',
  8. "img_url":theData.imgUrl,
  9. "link":theData.link,
  10. "desc":theData.title,
  11. "title":theData.desc, // 注意这里要分享出去的内容是desc
  12. "img_width":"120",
  13. "img_height":"120"
  14. }, function (resp) {
  15. switch (resp.err_msg) {
  16. // share_timeline:cancel 用户取消
  17. case 'share_timeline:cancel':
  18. callbacks.cancel && callbacks.cancel(resp);
  19. break;
  20. // share_timeline:fail 发送失败
  21. case 'share_timeline:fail':
  22. callbacks.fail && callbacks.fail(resp);
  23. break;
  24. // share_timeline:confirm 发送成功
  25. case 'share_timeline:confirm':
  26. case 'share_timeline:ok':
  27. callbacks.confirm && callbacks.confirm(resp);
  28. break;
  29. }
  30. // 无论成功失败都会执行的回调
  31. callbacks.all && callbacks.all(resp);
  32. });
  33. };
  34. WeixinJSBridge.on('menu:share:timeline', function (argv) {
  35. if (callbacks.async && callbacks.ready) {
  36. window["_wx_loadedCb_"] = callbacks.dataLoaded || new Function();
  37. if(window["_wx_loadedCb_"].toString().indexOf("_wx_loadedCb_") > 0) {
  38. window["_wx_loadedCb_"] = new Function();
  39. }
  40. callbacks.dataLoaded = function (newData) {
  41. window["_wx_loadedCb_"](newData);
  42. shareTimeline(newData);
  43. };
  44. // 然后就绪
  45. callbacks.ready && callbacks.ready(argv);
  46. } else {
  47. // 就绪状态
  48. callbacks.ready && callbacks.ready(argv);
  49. shareTimeline(data);
  50. }
  51. });
  52. }
  53. function weixinSendAppMessage(data, callbacks) {
  54. callbacks = callbacks || {};
  55. var sendAppMessage = function (theData) {
  56. WeixinJSBridge.invoke('sendAppMessage', {
  57. "appid":theData.appId ? theData.appId : '',
  58. "img_url":theData.imgUrl,
  59. "link":theData.link,
  60. "desc":theData.desc,
  61. "title":theData.title,
  62. "img_width":"120",
  63. "img_height":"120"
  64. }, function (resp) {
  65. switch (resp.err_msg) {
  66. // send_app_msg:cancel 用户取消
  67. case 'send_app_msg:cancel':
  68. callbacks.cancel && callbacks.cancel(resp);
  69. break;
  70. // send_app_msg:fail 发送失败
  71. case 'send_app_msg:fail':
  72. callbacks.fail && callbacks.fail(resp);
  73. break;
  74. // send_app_msg:confirm 发送成功
  75. case 'send_app_msg:confirm':
  76. case 'send_app_msg:ok':
  77. callbacks.confirm && callbacks.confirm(resp);
  78. break;
  79. }
  80. callbacks.all && callbacks.all(resp);
  81. });
  82. };
  83. WeixinJSBridge.on('menu:share:appmessage', function (argv) {
  84. if (callbacks.async && callbacks.ready) {
  85. window["_wx_loadedCb_"] = callbacks.dataLoaded || new Function();
  86. if(window["_wx_loadedCb_"].toString().indexOf("_wx_loadedCb_") > 0) {
  87. window["_wx_loadedCb_"] = new Function();
  88. }
  89. callbacks.dataLoaded = function (newData) {
  90. window["_wx_loadedCb_"](newData);
  91. sendAppMessage(newData);
  92. };
  93. // 然后就绪
  94. callbacks.ready && callbacks.ready(argv);
  95. } else {
  96. // 就绪状态
  97. callbacks.ready && callbacks.ready(argv);
  98. sendAppMessage(data);
  99. }
  100. });
  101. }
  102. function weixinShareWeibo(data, callbacks) {
  103. callbacks = callbacks || {};
  104. var shareWeibo = function (theData) {
  105. WeixinJSBridge.invoke('shareWeibo', {
  106. "content":theData.desc,
  107. "url":theData.link
  108. }, function (resp) {
  109. switch (resp.err_msg) {
  110. case 'share_weibo:cancel':
  111. callbacks.cancel && callbacks.cancel(resp);
  112. break;
  113. case 'share_weibo:fail':
  114. callbacks.fail && callbacks.fail(resp);
  115. break;
  116. case 'share_weibo:confirm':
  117. case 'share_weibo:ok':
  118. callbacks.confirm && callbacks.confirm(resp);
  119. break;
  120. }
  121. callbacks.all && callbacks.all(resp);
  122. });
  123. };
  124. WeixinJSBridge.on('menu:share:weibo', function (argv) {
  125. if (callbacks.async && callbacks.ready) {
  126. window["_wx_loadedCb_"] = callbacks.dataLoaded || new Function();
  127. if(window["_wx_loadedCb_"].toString().indexOf("_wx_loadedCb_") > 0) {
  128. window["_wx_loadedCb_"] = new Function();
  129. }
  130. callbacks.dataLoaded = function (newData) {
  131. window["_wx_loadedCb_"](newData);
  132. shareWeibo(newData);
  133. };
  134. callbacks.ready && callbacks.ready(argv);
  135. } else {
  136. callbacks.ready && callbacks.ready(argv);
  137. shareWeibo(data);
  138. }
  139. });
  140. }
  141. function imagePreview(curSrc,srcList) {
  142. if(!curSrc || !srcList || srcList.length == 0) {
  143. return;
  144. }
  145. WeixinJSBridge.invoke('imagePreview', {
  146. 'current' : curSrc,
  147. 'urls' : srcList
  148. });
  149. }
  150. function showOptionMenu() {
  151. WeixinJSBridge.call('showOptionMenu');
  152. }
  153. function hideOptionMenu() {
  154. WeixinJSBridge.call('hideOptionMenu');
  155. }
  156. function showToolbar() {
  157. WeixinJSBridge.call('showToolbar');
  158. }
  159. function hideToolbar() {
  160. WeixinJSBridge.call('hideToolbar');
  161. }
  162. function getNetworkType(callback) {
  163. if (callback && typeof callback == 'function') {
  164. WeixinJSBridge.invoke('getNetworkType', {}, function (e) {
  165. callback(e.err_msg);
  166. });
  167. }
  168. }
  169. function closeWindow() {
  170. WeixinJSBridge.call("closeWindow");
  171. }
  172. function wxJsBridgeReady(readyCallback) {
  173. if (readyCallback && typeof readyCallback == 'function') {
  174. var Api = this;
  175. var wxReadyFunc = function () {
  176. readyCallback(Api);
  177. };
  178. if (typeof window.WeixinJSBridge == "undefined"){
  179. if (document.addEventListener) {
  180. document.addEventListener('WeixinJSBridgeReady', wxReadyFunc, false);
  181. } else if (document.attachEvent) {
  182. document.attachEvent('WeixinJSBridgeReady', wxReadyFunc);
  183. document.attachEvent('onWeixinJSBridgeReady', wxReadyFunc);
  184. }
  185. }else{
  186. wxReadyFunc();
  187. }
  188. }
  189. }
  190. return {
  191. version :"1.8",
  192. ready :wxJsBridgeReady,
  193. shareToTimeline :weixinShareTimeline,
  194. shareToWeibo :weixinShareWeibo,
  195. shareToFriend :weixinSendAppMessage,
  196. showOptionMenu :showOptionMenu,
  197. hideOptionMenu :hideOptionMenu,
  198. showToolbar :showToolbar,
  199. hideToolbar :hideToolbar,
  200. getNetworkType :getNetworkType,
  201. imagePreview :imagePreview,
  202. closeWindow :closeWindow
  203. };
  204. })();