diff --git a/README.md b/README.md index 6c35efd..233a2ef 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ 说明: 仅将官方 js-sdk 发布到 npm,支持 CommonJS,便于 browserify, webpack 等直接使用 -js源码: https://res.wx.qq.com/open/js/jweixin-1.3.2.js +js源码: https://res.wx.qq.com/open/js/jweixin-1.6.0.js 官方使用说明: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 diff --git a/index.js b/index.js index d156394..98f5ccb 100644 --- a/index.js +++ b/index.js @@ -1,819 +1,898 @@ -! function (e, n) { - module.exports = n(e) -}(window, function (e, n) { - function i(n, i, t) { - e.WeixinJSBridge ? WeixinJSBridge.invoke(n, o(i), - function(e) { - c(n, e, t) - }) : u(n, t) +!(function(e, n) { + module.exports = n(e); +})(window, function(o, e) { + if (!o.jWeixin) { + var n, + c = { + 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", + openEnterpriseRedPacket: "getRecevieBizHongBaoRequest", + startSearchBeacons: "startMonitoringBeacons", + stopSearchBeacons: "stopMonitoringBeacons", + onSearchBeacons: "onBeaconsInRange", + consumeAndShareCard: "consumedShareCard", + openAddress: "editAddress" + }, + a = (function() { + var e = {}; + for (var n in c) e[c[n]] = n; + return e; + })(), + i = o.document, + t = i.title, + r = navigator.userAgent.toLowerCase(), + s = navigator.platform.toLowerCase(), + d = !(!s.match("mac") && !s.match("win")), + u = -1 != r.indexOf("wxdebugger"), + l = -1 != r.indexOf("micromessenger"), + p = -1 != r.indexOf("android"), + f = -1 != r.indexOf("iphone") || -1 != r.indexOf("ipad"), + m = (n = + r.match(/micromessenger\/(\d+\.\d+\.\d+)/) || + r.match(/micromessenger\/(\d+\.\d+)/)) + ? n[1] + : "", + g = { + initStartTime: L(), + initEndTime: 0, + preVerifyStartTime: 0, + preVerifyEndTime: 0 + }, + h = { + version: 1, + appId: "", + initTime: 0, + preVerifyTime: 0, + networkType: "", + isPreVerifyOk: 1, + systemType: f ? 1 : p ? 2 : -1, + clientVersion: m, + url: encodeURIComponent(location.href) + }, + v = {}, + S = { _completes: [] }, + y = { state: 0, data: {} }; + O(function() { + g.initEndTime = L(); + }); + var I = !1, + _ = [], + w = { + config: function(e) { + B("config", (v = e)); + var t = !1 !== v.check; + O(function() { + if (t) + M( + c.config, + { + verifyJsApiList: C(v.jsApiList), + verifyOpenTagList: C(v.openTagList) + }, + (function() { + (S._complete = function(e) { + (g.preVerifyEndTime = L()), (y.state = 1), (y.data = e); + }), + (S.success = function(e) { + h.isPreVerifyOk = 0; + }), + (S.fail = function(e) { + S._fail ? S._fail(e) : (y.state = -1); + }); + var t = S._completes; + return ( + t.push(function() { + !(function() { + if ( + !( + d || + u || + v.debug || + m < "6.0.2" || + h.systemType < 0 + ) + ) { + var i = new Image(); + (h.appId = v.appId), + (h.initTime = g.initEndTime - g.initStartTime), + (h.preVerifyTime = + g.preVerifyEndTime - g.preVerifyStartTime), + w.getNetworkType({ + isInnerInvoke: !0, + success: function(e) { + h.networkType = e.networkType; + var n = + "https://open.weixin.qq.com/sdk/report?v=" + + h.version + + "&o=" + + h.isPreVerifyOk + + "&s=" + + h.systemType + + "&c=" + + h.clientVersion + + "&a=" + + h.appId + + "&n=" + + h.networkType + + "&i=" + + h.initTime + + "&p=" + + h.preVerifyTime + + "&u=" + + h.url; + i.src = n; + } + }); + } + })(); + }), + (S.complete = function(e) { + for (var n = 0, i = t.length; n < i; ++n) t[n](); + S._completes = []; + }), + S + ); + })() + ), + (g.preVerifyStartTime = L()); + else { + y.state = 1; + for (var e = S._completes, n = 0, i = e.length; n < i; ++n) + e[n](); + S._completes = []; + } + }), + w.invoke || + ((w.invoke = function(e, n, i) { + o.WeixinJSBridge && WeixinJSBridge.invoke(e, x(n), i); + }), + (w.on = function(e, n) { + o.WeixinJSBridge && WeixinJSBridge.on(e, n); + })); + }, + ready: function(e) { + 0 != y.state ? e() : (S._completes.push(e), !l && v.debug && e()); + }, + error: function(e) { + m < "6.0.2" || (-1 == y.state ? e(y.data) : (S._fail = e)); + }, + checkJsApi: function(e) { + M( + "checkJsApi", + { jsApiList: C(e.jsApiList) }, + ((e._complete = function(e) { + if (p) { + var n = e.checkResult; + n && (e.checkResult = JSON.parse(n)); + } + e = (function(e) { + var n = e.checkResult; + for (var i in n) { + var t = a[i]; + t && ((n[t] = n[i]), delete n[i]); + } + return e; + })(e); + }), + e) + ); + }, + onMenuShareTimeline: function(e) { + P( + c.onMenuShareTimeline, + { + complete: function() { + M( + "shareTimeline", + { + title: e.title || t, + desc: e.title || t, + img_url: e.imgUrl || "", + link: e.link || location.href, + type: e.type || "link", + data_url: e.dataUrl || "" + }, + e + ); + } + }, + e + ); + }, + onMenuShareAppMessage: function(n) { + P( + c.onMenuShareAppMessage, + { + complete: function(e) { + "favorite" === e.scene + ? M("sendAppMessage", { + title: n.title || t, + desc: n.desc || "", + link: n.link || location.href, + img_url: n.imgUrl || "", + type: n.type || "link", + data_url: n.dataUrl || "" + }) + : M( + "sendAppMessage", + { + title: n.title || t, + desc: n.desc || "", + link: n.link || location.href, + img_url: n.imgUrl || "", + type: n.type || "link", + data_url: n.dataUrl || "" + }, + n + ); + } + }, + n + ); + }, + onMenuShareQQ: function(e) { + P( + c.onMenuShareQQ, + { + complete: function() { + M( + "shareQQ", + { + title: e.title || t, + desc: e.desc || "", + img_url: e.imgUrl || "", + link: e.link || location.href + }, + e + ); + } + }, + e + ); + }, + onMenuShareWeibo: function(e) { + P( + c.onMenuShareWeibo, + { + complete: function() { + M( + "shareWeiboApp", + { + title: e.title || t, + desc: e.desc || "", + img_url: e.imgUrl || "", + link: e.link || location.href + }, + e + ); + } + }, + e + ); + }, + onMenuShareQZone: function(e) { + P( + c.onMenuShareQZone, + { + complete: function() { + M( + "shareQZone", + { + title: e.title || t, + desc: e.desc || "", + img_url: e.imgUrl || "", + link: e.link || location.href + }, + e + ); + } + }, + e + ); + }, + updateTimelineShareData: function(e) { + M( + "updateTimelineShareData", + { title: e.title, link: e.link, imgUrl: e.imgUrl }, + e + ); + }, + updateAppMessageShareData: function(e) { + M( + "updateAppMessageShareData", + { title: e.title, desc: e.desc, link: e.link, imgUrl: e.imgUrl }, + e + ); + }, + startRecord: function(e) { + M("startRecord", {}, e); + }, + stopRecord: function(e) { + M("stopRecord", {}, e); + }, + onVoiceRecordEnd: function(e) { + P("onVoiceRecordEnd", e); + }, + playVoice: function(e) { + M("playVoice", { localId: e.localId }, e); + }, + pauseVoice: function(e) { + M("pauseVoice", { localId: e.localId }, e); + }, + stopVoice: function(e) { + M("stopVoice", { localId: e.localId }, e); + }, + onVoicePlayEnd: function(e) { + P("onVoicePlayEnd", e); + }, + uploadVoice: function(e) { + M( + "uploadVoice", + { + localId: e.localId, + isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 + }, + e + ); + }, + downloadVoice: function(e) { + M( + "downloadVoice", + { + serverId: e.serverId, + isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 + }, + e + ); + }, + translateVoice: function(e) { + M( + "translateVoice", + { + localId: e.localId, + isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 + }, + e + ); + }, + chooseImage: function(e) { + M( + "chooseImage", + { + scene: "1|2", + count: e.count || 9, + sizeType: e.sizeType || ["original", "compressed"], + sourceType: e.sourceType || ["album", "camera"] + }, + ((e._complete = function(e) { + if (p) { + var n = e.localIds; + try { + n && (e.localIds = JSON.parse(n)); + } catch (e) {} + } + }), + e) + ); + }, + getLocation: function(e) {}, + previewImage: function(e) { + M(c.previewImage, { current: e.current, urls: e.urls }, e); + }, + uploadImage: function(e) { + M( + "uploadImage", + { + localId: e.localId, + isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 + }, + e + ); + }, + downloadImage: function(e) { + M( + "downloadImage", + { + serverId: e.serverId, + isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 + }, + e + ); + }, + getLocalImgData: function(e) { + !1 === I + ? ((I = !0), + M( + "getLocalImgData", + { localId: e.localId }, + ((e._complete = function(e) { + if (((I = !1), 0 < _.length)) { + var n = _.shift(); + wx.getLocalImgData(n); + } + }), + e) + )) + : _.push(e); + }, + getNetworkType: function(e) { + M( + "getNetworkType", + {}, + ((e._complete = function(e) { + e = (function(e) { + var n = e.errMsg; + e.errMsg = "getNetworkType:ok"; + var i = e.subtype; + if ((delete e.subtype, i)) e.networkType = i; + else { + var t = n.indexOf(":"), + o = n.substring(t + 1); + switch (o) { + case "wifi": + case "edge": + case "wwan": + e.networkType = o; + break; + default: + e.errMsg = "getNetworkType:fail"; + } + } + return e; + })(e); + }), + e) + ); + }, + openLocation: function(e) { + M( + "openLocation", + { + latitude: e.latitude, + longitude: e.longitude, + name: e.name || "", + address: e.address || "", + scale: e.scale || 28, + infoUrl: e.infoUrl || "" + }, + e + ); + }, + getLocation: function(e) { + M( + c.getLocation, + { type: (e = e || {}).type || "wgs84" }, + ((e._complete = function(e) { + delete e.type; + }), + e) + ); + }, + hideOptionMenu: function(e) { + M("hideOptionMenu", {}, e); + }, + showOptionMenu: function(e) { + M("showOptionMenu", {}, e); + }, + closeWindow: function(e) { + M("closeWindow", {}, (e = e || {})); + }, + hideMenuItems: function(e) { + M("hideMenuItems", { menuList: e.menuList }, e); + }, + showMenuItems: function(e) { + M("showMenuItems", { menuList: e.menuList }, e); + }, + hideAllNonBaseMenuItem: function(e) { + M("hideAllNonBaseMenuItem", {}, e); + }, + showAllNonBaseMenuItem: function(e) { + M("showAllNonBaseMenuItem", {}, e); + }, + scanQRCode: function(e) { + M( + "scanQRCode", + { + needResult: (e = e || {}).needResult || 0, + scanType: e.scanType || ["qrCode", "barCode"] + }, + ((e._complete = function(e) { + if (f) { + var n = e.resultStr; + if (n) { + var i = JSON.parse(n); + e.resultStr = i && i.scan_code && i.scan_code.scan_result; + } + } + }), + e) + ); + }, + openAddress: function(e) { + M( + c.openAddress, + {}, + ((e._complete = function(e) { + e = (function(e) { + return ( + (e.postalCode = e.addressPostalCode), + delete e.addressPostalCode, + (e.provinceName = e.proviceFirstStageName), + delete e.proviceFirstStageName, + (e.cityName = e.addressCitySecondStageName), + delete e.addressCitySecondStageName, + (e.countryName = e.addressCountiesThirdStageName), + delete e.addressCountiesThirdStageName, + (e.detailInfo = e.addressDetailInfo), + delete e.addressDetailInfo, + e + ); + })(e); + }), + e) + ); + }, + openProductSpecificView: function(e) { + M( + c.openProductSpecificView, + { + pid: e.productId, + view_type: e.viewType || 0, + ext_info: e.extInfo + }, + e + ); + }, + addCard: function(e) { + for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) { + var r = n[t], + a = { card_id: r.cardId, card_ext: r.cardExt }; + i.push(a); + } + M( + c.addCard, + { card_list: i }, + ((e._complete = function(e) { + var n = e.card_list; + if (n) { + for (var i = 0, t = (n = JSON.parse(n)).length; i < t; ++i) { + var o = n[i]; + (o.cardId = o.card_id), + (o.cardExt = o.card_ext), + (o.isSuccess = !!o.is_succ), + delete o.card_id, + delete o.card_ext, + delete o.is_succ; + } + (e.cardList = n), delete e.card_list; + } + }), + e) + ); + }, + chooseCard: function(e) { + M( + "chooseCard", + { + app_id: v.appId, + location_id: e.shopId || "", + sign_type: e.signType || "SHA1", + card_id: e.cardId || "", + card_type: e.cardType || "", + card_sign: e.cardSign, + time_stamp: e.timestamp + "", + nonce_str: e.nonceStr + }, + ((e._complete = function(e) { + (e.cardList = e.choose_card_info), delete e.choose_card_info; + }), + e) + ); + }, + openCard: function(e) { + for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) { + var r = n[t], + a = { card_id: r.cardId, code: r.code }; + i.push(a); + } + M(c.openCard, { card_list: i }, e); + }, + consumeAndShareCard: function(e) { + M( + c.consumeAndShareCard, + { consumedCardId: e.cardId, consumedCode: e.code }, + e + ); + }, + chooseWXPay: function(e) { + M(c.chooseWXPay, V(e), e); + }, + openEnterpriseRedPacket: function(e) { + M(c.openEnterpriseRedPacket, V(e), e); + }, + startSearchBeacons: function(e) { + M(c.startSearchBeacons, { ticket: e.ticket }, e); + }, + stopSearchBeacons: function(e) { + M(c.stopSearchBeacons, {}, e); + }, + onSearchBeacons: function(e) { + P(c.onSearchBeacons, e); + }, + openEnterpriseChat: function(e) { + M( + "openEnterpriseChat", + { useridlist: e.userIds, chatname: e.groupName }, + e + ); + }, + launchMiniProgram: function(e) { + M( + "launchMiniProgram", + { + targetAppId: e.targetAppId, + path: (function(e) { + if ("string" == typeof e && 0 < e.length) { + var n = e.split("?")[0], + i = e.split("?")[1]; + return (n += ".html"), void 0 !== i ? n + "?" + i : n; + } + })(e.path), + envVersion: e.envVersion + }, + e + ); + }, + openBusinessView: function(e) { + M( + "openBusinessView", + { + businessType: e.businessType, + queryString: e.queryString || "", + envVersion: e.envVersion + }, + ((e._complete = function(n) { + if (p) { + var e = n.extraData; + if (e) + try { + n.extraData = JSON.parse(e); + } catch (e) { + n.extraData = {}; + } + } + }), + e) + ); + }, + miniProgram: { + navigateBack: function(e) { + (e = e || {}), + O(function() { + M( + "invokeMiniProgramAPI", + { name: "navigateBack", arg: { delta: e.delta || 1 } }, + e + ); + }); + }, + navigateTo: function(e) { + O(function() { + M( + "invokeMiniProgramAPI", + { name: "navigateTo", arg: { url: e.url } }, + e + ); + }); + }, + redirectTo: function(e) { + O(function() { + M( + "invokeMiniProgramAPI", + { name: "redirectTo", arg: { url: e.url } }, + e + ); + }); + }, + switchTab: function(e) { + O(function() { + M( + "invokeMiniProgramAPI", + { name: "switchTab", arg: { url: e.url } }, + e + ); + }); + }, + reLaunch: function(e) { + O(function() { + M( + "invokeMiniProgramAPI", + { name: "reLaunch", arg: { url: e.url } }, + e + ); + }); + }, + postMessage: function(e) { + O(function() { + M( + "invokeMiniProgramAPI", + { name: "postMessage", arg: e.data || {} }, + e + ); + }); + }, + getEnv: function(e) { + O(function() { + e({ miniprogram: "miniprogram" === o.__wxjs_environment }); + }); + } + } + }, + T = 1, + k = {}; + return ( + i.addEventListener( + "error", + function(e) { + if (!p) { + var n = e.target, + i = n.tagName, + t = n.src; + if ("IMG" == i || "VIDEO" == i || "AUDIO" == i || "SOURCE" == i) + if (-1 != t.indexOf("wxlocalresource://")) { + e.preventDefault(), e.stopPropagation(); + var o = n["wx-id"]; + if ((o || ((o = T++), (n["wx-id"] = o)), k[o])) return; + (k[o] = !0), + wx.ready(function() { + wx.getLocalImgData({ + localId: t, + success: function(e) { + n.src = e.localData; + } + }); + }); + } + } + }, + !0 + ), + i.addEventListener( + "load", + function(e) { + if (!p) { + var n = e.target, + i = n.tagName; + n.src; + if ("IMG" == i || "VIDEO" == i || "AUDIO" == i || "SOURCE" == i) { + var t = n["wx-id"]; + t && (k[t] = !1); + } + } + }, + !0 + ), + e && (o.wx = o.jWeixin = w), + w + ); } - function t(n, i, t) { - e.WeixinJSBridge ? WeixinJSBridge.on(n, - function(e) { - t && t.trigger && t.trigger(e), - c(n, e, i) - }) : t ? u(n, t) : u(n, i) + function M(n, e, i) { + o.WeixinJSBridge + ? WeixinJSBridge.invoke(n, x(e), function(e) { + A(n, e, i); + }) + : B(n, i); } - function o(e) { - return e = e || {}, - e.appId = C.appId, - e.verifyAppId = C.appId, - e.verifySignType = "sha1", - e.verifyTimestamp = C.timestamp + "", - e.verifyNonceStr = C.nonceStr, - e.verifySignature = C.signature, - e + function P(n, i, t) { + o.WeixinJSBridge + ? WeixinJSBridge.on(n, function(e) { + t && t.trigger && t.trigger(e), A(n, e, i); + }) + : B(n, t || i); } - function r(e) { + function x(e) { + return ( + ((e = e || {}).appId = v.appId), + (e.verifyAppId = v.appId), + (e.verifySignType = "sha1"), + (e.verifyTimestamp = v.timestamp + ""), + (e.verifyNonceStr = v.nonceStr), + (e.verifySignature = v.signature), + e + ); + } + function V(e) { return { timeStamp: e.timestamp + "", nonceStr: e.nonceStr, package: e.package, paySign: e.paySign, signType: e.signType || "SHA1" - } + }; } - function a(e) { - return e.postalCode = e.addressPostalCode, - delete e.addressPostalCode, - e.provinceName = e.proviceFirstStageName, - delete e.proviceFirstStageName, - e.cityName = e.addressCitySecondStageName, - delete e.addressCitySecondStageName, - e.countryName = e.addressCountiesThirdStageName, - delete e.addressCountiesThirdStageName, - e.detailInfo = e.addressDetailInfo, - delete e.addressDetailInfo, - e - } - function c(e, n, i) { - "openEnterpriseChat" == e && (n.errCode = n.err_code), - delete n.err_code, - delete n.err_desc, - delete n.err_detail; + function A(e, n, i) { + ("openEnterpriseChat" != e && "openBusinessView" !== e) || + (n.errCode = n.err_code), + delete n.err_code, + delete n.err_desc, + delete n.err_detail; var t = n.errMsg; - t || (t = n.err_msg, delete n.err_msg, t = s(e, t), n.errMsg = t), - (i = i || {})._complete && (i._complete(n), delete i._complete), - t = n.errMsg || "", - C.debug && !i.isInnerInvoke && alert(JSON.stringify(n)); + t || + ((t = n.err_msg), + delete n.err_msg, + (t = (function(e, n) { + var i = e, + t = a[i]; + t && (i = t); + var o = "ok"; + if (n) { + var r = n.indexOf(":"); + "confirm" == (o = n.substring(r + 1)) && (o = "ok"), + "failed" == o && (o = "fail"), + -1 != o.indexOf("failed_") && (o = o.substring(7)), + -1 != o.indexOf("fail_") && (o = o.substring(5)), + ("access denied" != + (o = (o = o.replace(/_/g, " ")).toLowerCase()) && + "no permission to execute" != o) || + (o = "permission denied"), + "config" == i && "function not exist" == o && (o = "ok"), + "" == o && (o = "fail"); + } + return (n = i + ":" + o); + })(e, t)), + (n.errMsg = t)), + (i = i || {})._complete && (i._complete(n), delete i._complete), + (t = n.errMsg || ""), + v.debug && !i.isInnerInvoke && alert(JSON.stringify(n)); var o = t.indexOf(":"); switch (t.substring(o + 1)) { - case "ok": - i.success && i.success(n); - break; - case "cancel": - i.cancel && i.cancel(n); - break; - default: - i.fail && i.fail(n) + case "ok": + i.success && i.success(n); + break; + case "cancel": + i.cancel && i.cancel(n); + break; + default: + i.fail && i.fail(n); } - i.complete && i.complete(n) + i.complete && i.complete(n); } - function s(e, n) { - var i = e, - t = v[i]; - t && (i = t); - var o = "ok"; - if (n) { - var r = n.indexOf(":"); - "confirm" == (o = n.substring(r + 1)) && (o = "ok"), - "failed" == o && (o = "fail"), - -1 != o.indexOf("failed_") && (o = o.substring(7)), - -1 != o.indexOf("fail_") && (o = o.substring(5)), - "access denied" != (o = (o = o.replace(/_/g, " ")).toLowerCase()) && "no permission to execute" != o || (o = "permission denied"), - "config" == i && "function not exist" == o && (o = "ok"), - "" == o && (o = "fail") - } - return n = i + ":" + o - } - function d(e) { + function C(e) { if (e) { - for (var n = 0, - i = e.length; n < i; ++n) { + for (var n = 0, i = e.length; n < i; ++n) { var t = e[n], - o = h[t]; - o && (e[n] = o) + o = c[t]; + o && (e[n] = o); } - return e + return e; } } - function u(e, n) { - if (! (!C.debug || n && n.isInnerInvoke)) { - var i = v[e]; + function B(e, n) { + if (!(!v.debug || (n && n.isInnerInvoke))) { + var i = a[e]; i && (e = i), - n && n._complete && delete n._complete, - console.log('"' + e + '",', n || "") + n && n._complete && delete n._complete, + console.log('"' + e + '",', n || ""); } } - function l(e) { - if (! (k || w || C.debug || x < "6.0.2" || V.systemType < 0)) { - var n = new Image; - V.appId = C.appId, - V.initTime = A.initEndTime - A.initStartTime, - V.preVerifyTime = A.preVerifyEndTime - A.preVerifyStartTime, - N.getNetworkType({ - isInnerInvoke: !0, - success: function(e) { - V.networkType = e.networkType; - var i = "https://open.weixin.qq.com/sdk/report?v=" + V.version + "&o=" + V.isPreVerifyOk + "&s=" + V.systemType + "&c=" + V.clientVersion + "&a=" + V.appId + "&n=" + V.networkType + "&i=" + V.initTime + "&p=" + V.preVerifyTime + "&u=" + V.url; - n.src = i - } - }) - } + function L() { + return new Date().getTime(); } - function p() { - return (new Date).getTime() + function O(e) { + l && + (o.WeixinJSBridge + ? e() + : i.addEventListener && + i.addEventListener("WeixinJSBridgeReady", e, !1)); } - function f(n) { - T && (e.WeixinJSBridge ? n() : S.addEventListener && S.addEventListener("WeixinJSBridgeReady", n, !1)) - } - function m() { - N.invoke || (N.invoke = function(n, i, t) { - e.WeixinJSBridge && WeixinJSBridge.invoke(n, o(i), t) - }, - N.on = function(n, i) { - e.WeixinJSBridge && WeixinJSBridge.on(n, i) - }) - } - function g(e) { - if ("string" == typeof e && e.length > 0) { - var n = e.split("?")[0], - i = e.split("?")[1]; - return n += ".html", - void 0 !== i ? n + "?" + i: n - } - } - if (!e.jWeixin) { - var h = { - 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", - openEnterpriseRedPacket: "getRecevieBizHongBaoRequest", - startSearchBeacons: "startMonitoringBeacons", - stopSearchBeacons: "stopMonitoringBeacons", - onSearchBeacons: "onBeaconsInRange", - consumeAndShareCard: "consumedShareCard", - openAddress: "editAddress" - }, - v = function() { - var e = {}; - for (var n in h) e[h[n]] = n; - return e - } (), - S = e.document, - I = S.title, - y = navigator.userAgent.toLowerCase(), - _ = navigator.platform.toLowerCase(), - k = !(!_.match("mac") && !_.match("win")), - w = -1 != y.indexOf("wxdebugger"), - T = -1 != y.indexOf("micromessenger"), - M = -1 != y.indexOf("android"), - P = -1 != y.indexOf("iphone") || -1 != y.indexOf("ipad"), - x = function() { - var e = y.match(/micromessenger\/(\d+\.\d+\.\d+)/) || y.match(/micromessenger\/(\d+\.\d+)/); - return e ? e[1] : "" - } (), - A = { - initStartTime: p(), - initEndTime: 0, - preVerifyStartTime: 0, - preVerifyEndTime: 0 - }, - V = { - version: 1, - appId: "", - initTime: 0, - preVerifyTime: 0, - networkType: "", - isPreVerifyOk: 1, - systemType: P ? 1 : M ? 2 : -1, - clientVersion: x, - url: encodeURIComponent(location.href) - }, - C = {}, - L = { - _completes: [] - }, - B = { - state: 0, - data: {} - }; - f(function() { - A.initEndTime = p() - }); - var O = !1, - E = [], - N = { - config: function(e) { - C = e, - u("config", e); - var n = !1 !== C.check; - f(function() { - if (n) i(h.config, { - verifyJsApiList: d(C.jsApiList) - }, - function() { - L._complete = function(e) { - A.preVerifyEndTime = p(), - B.state = 1, - B.data = e - }, - L.success = function(e) { - V.isPreVerifyOk = 0 - }, - L.fail = function(e) { - L._fail ? L._fail(e) : B.state = -1 - }; - var e = L._completes; - return e.push(function() { - l() - }), - L.complete = function(n) { - for (var i = 0, - t = e.length; i < t; ++i) e[i](); - L._completes = [] - }, - L - } ()), - A.preVerifyStartTime = p(); - else { - B.state = 1; - for (var e = L._completes, - t = 0, - o = e.length; t < o; ++t) e[t](); - L._completes = [] - } - }), - m() - }, - ready: function(e) { - 0 != B.state ? e() : (L._completes.push(e), !T && C.debug && e()) - }, - error: function(e) { - x < "6.0.2" || ( - 1 == B.state ? e(B.data) : L._fail = e) - }, - checkJsApi: function(e) { - var n = function(e) { - var n = e.checkResult; - for (var i in n) { - var t = v[i]; - t && (n[t] = n[i], delete n[i]) - } - return e - }; - i("checkJsApi", { - jsApiList: d(e.jsApiList) - }, - (e._complete = function(e) { - if (M) { - var i = e.checkResult; - i && (e.checkResult = JSON.parse(i)) - } - e = n(e) - }, - e)) - }, - onMenuShareTimeline: function(e) { - t(h.onMenuShareTimeline, { - complete: function() { - i("shareTimeline", { - title: e.title || I, - desc: e.title || I, - img_url: e.imgUrl || "", - link: e.link || location.href, - type: e.type || "link", - data_url: e.dataUrl || "" - }, - e) - } - }, - e) - }, - onMenuShareAppMessage: function(e) { - t(h.onMenuShareAppMessage, { - complete: function(n) { - "favorite" === n.scene ? i("sendAppMessage", { - title: e.title || I, - desc: e.desc || "", - link: e.link || location.href, - img_url: e.imgUrl || "", - type: e.type || "link", - data_url: e.dataUrl || "" - }) : i("sendAppMessage", { - title: e.title || I, - desc: e.desc || "", - link: e.link || location.href, - img_url: e.imgUrl || "", - type: e.type || "link", - data_url: e.dataUrl || "" - }, - e) - } - }, - e) - }, - onMenuShareQQ: function(e) { - t(h.onMenuShareQQ, { - complete: function() { - i("shareQQ", { - title: e.title || I, - desc: e.desc || "", - img_url: e.imgUrl || "", - link: e.link || location.href - }, - e) - } - }, - e) - }, - onMenuShareWeibo: function(e) { - t(h.onMenuShareWeibo, { - complete: function() { - i("shareWeiboApp", { - title: e.title || I, - desc: e.desc || "", - img_url: e.imgUrl || "", - link: e.link || location.href - }, - e) - } - }, - e) - }, - onMenuShareQZone: function(e) { - t(h.onMenuShareQZone, { - complete: function() { - i("shareQZone", { - title: e.title || I, - desc: e.desc || "", - img_url: e.imgUrl || "", - link: e.link || location.href - }, - e) - } - }, - e) - }, - updateTimelineShareData: function(e) { - i("updateTimelineShareData", { - title: e.title, - link: e.link, - imgUrl: e.imgUrl - }, - e) - }, - updateAppMessageShareData: function(e) { - i("updateAppMessageShareData", { - title: e.title, - desc: e.desc, - link: e.link, - imgUrl: e.imgUrl - }, - e) - }, - startRecord: function(e) { - i("startRecord", {}, - e) - }, - stopRecord: function(e) { - i("stopRecord", {}, - e) - }, - onVoiceRecordEnd: function(e) { - t("onVoiceRecordEnd", e) - }, - playVoice: function(e) { - i("playVoice", { - localId: e.localId - }, - e) - }, - pauseVoice: function(e) { - i("pauseVoice", { - localId: e.localId - }, - e) - }, - stopVoice: function(e) { - i("stopVoice", { - localId: e.localId - }, - e) - }, - onVoicePlayEnd: function(e) { - t("onVoicePlayEnd", e) - }, - uploadVoice: function(e) { - i("uploadVoice", { - localId: e.localId, - isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 - }, - e) - }, - downloadVoice: function(e) { - i("downloadVoice", { - serverId: e.serverId, - isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 - }, - e) - }, - translateVoice: function(e) { - i("translateVoice", { - localId: e.localId, - isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 - }, - e) - }, - chooseImage: function(e) { - i("chooseImage", { - scene: "1|2", - count: e.count || 9, - sizeType: e.sizeType || ["original", "compressed"], - sourceType: e.sourceType || ["album", "camera"] - }, - (e._complete = function(e) { - if (M) { - var n = e.localIds; - try { - n && (e.localIds = JSON.parse(n)) - } catch(e) {} - } - }, - e)) - }, - getLocation: function(e) {}, - previewImage: function(e) { - i(h.previewImage, { - current: e.current, - urls: e.urls - }, - e) - }, - uploadImage: function(e) { - i("uploadImage", { - localId: e.localId, - isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 - }, - e) - }, - downloadImage: function(e) { - i("downloadImage", { - serverId: e.serverId, - isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 - }, - e) - }, - getLocalImgData: function(e) { ! 1 === O ? (O = !0, i("getLocalImgData", { - localId: e.localId - }, - (e._complete = function(e) { - if (O = !1, E.length > 0) { - var n = E.shift(); - wx.getLocalImgData(n) - } - }, - e))) : E.push(e) - }, - getNetworkType: function(e) { - var n = function(e) { - var n = e.errMsg; - e.errMsg = "getNetworkType:ok"; - var i = e.subtype; - if (delete e.subtype, i) e.networkType = i; - else { - var t = n.indexOf(":"), - o = n.substring(t + 1); - switch (o) { - case "wifi": - case "edge": - case "wwan": - e.networkType = o; - break; - default: - e.errMsg = "getNetworkType:fail" - } - } - return e - }; - i("getNetworkType", {}, - (e._complete = function(e) { - e = n(e) - }, - e)) - }, - openLocation: function(e) { - i("openLocation", { - latitude: e.latitude, - longitude: e.longitude, - name: e.name || "", - address: e.address || "", - scale: e.scale || 28, - infoUrl: e.infoUrl || "" - }, - e) - }, - getLocation: function(e) { - e = e || {}, - i(h.getLocation, { - type: e.type || "wgs84" - }, - (e._complete = function(e) { - delete e.type - }, - e)) - }, - hideOptionMenu: function(e) { - i("hideOptionMenu", {}, - e) - }, - showOptionMenu: function(e) { - i("showOptionMenu", {}, - e) - }, - closeWindow: function(e) { - i("closeWindow", {}, - e = e || {}) - }, - hideMenuItems: function(e) { - i("hideMenuItems", { - menuList: e.menuList - }, - e) - }, - showMenuItems: function(e) { - i("showMenuItems", { - menuList: e.menuList - }, - e) - }, - hideAllNonBaseMenuItem: function(e) { - i("hideAllNonBaseMenuItem", {}, - e) - }, - showAllNonBaseMenuItem: function(e) { - i("showAllNonBaseMenuItem", {}, - e) - }, - scanQRCode: function(e) { - i("scanQRCode", { - needResult: (e = e || {}).needResult || 0, - scanType: e.scanType || ["qrCode", "barCode"] - }, - (e._complete = function(e) { - if (P) { - var n = e.resultStr; - if (n) { - var i = JSON.parse(n); - e.resultStr = i && i.scan_code && i.scan_code.scan_result - } - } - }, - e)) - }, - openAddress: function(e) { - i(h.openAddress, {}, - (e._complete = function(e) { - e = a(e) - }, - e)) - }, - openProductSpecificView: function(e) { - i(h.openProductSpecificView, { - pid: e.productId, - view_type: e.viewType || 0, - ext_info: e.extInfo - }, - e) - }, - addCard: function(e) { - for (var n = e.cardList, - t = [], o = 0, r = n.length; o < r; ++o) { - var a = n[o], - c = { - card_id: a.cardId, - card_ext: a.cardExt - }; - t.push(c) - } - i(h.addCard, { - card_list: t - }, - (e._complete = function(e) { - var n = e.card_list; - if (n) { - for (var i = 0, - t = (n = JSON.parse(n)).length; i < t; ++i) { - var o = n[i]; - o.cardId = o.card_id, - o.cardExt = o.card_ext, - o.isSuccess = !!o.is_succ, - delete o.card_id, - delete o.card_ext, - delete o.is_succ - } - e.cardList = n, - delete e.card_list - } - }, - e)) - }, - chooseCard: function(e) { - i("chooseCard", { - app_id: C.appId, - location_id: e.shopId || "", - sign_type: e.signType || "SHA1", - card_id: e.cardId || "", - card_type: e.cardType || "", - card_sign: e.cardSign, - time_stamp: e.timestamp + "", - nonce_str: e.nonceStr - }, - (e._complete = function(e) { - e.cardList = e.choose_card_info, - delete e.choose_card_info - }, - e)) - }, - openCard: function(e) { - for (var n = e.cardList, - t = [], o = 0, r = n.length; o < r; ++o) { - var a = n[o], - c = { - card_id: a.cardId, - code: a.code - }; - t.push(c) - } - i(h.openCard, { - card_list: t - }, - e) - }, - consumeAndShareCard: function(e) { - i(h.consumeAndShareCard, { - consumedCardId: e.cardId, - consumedCode: e.code - }, - e) - }, - chooseWXPay: function(e) { - i(h.chooseWXPay, r(e), e) - }, - openEnterpriseRedPacket: function(e) { - i(h.openEnterpriseRedPacket, r(e), e) - }, - startSearchBeacons: function(e) { - i(h.startSearchBeacons, { - ticket: e.ticket - }, - e) - }, - stopSearchBeacons: function(e) { - i(h.stopSearchBeacons, {}, - e) - }, - onSearchBeacons: function(e) { - t(h.onSearchBeacons, e) - }, - openEnterpriseChat: function(e) { - i("openEnterpriseChat", { - useridlist: e.userIds, - chatname: e.groupName - }, - e) - }, - launchMiniProgram: function(e) { - i("launchMiniProgram", { - targetAppId: e.targetAppId, - path: g(e.path), - envVersion: e.envVersion - }, - e) - }, - miniProgram: { - navigateBack: function(e) { - e = e || {}, - f(function() { - i("invokeMiniProgramAPI", { - name: "navigateBack", - arg: { - delta: e.delta || 1 - } - }, - e) - }) - }, - navigateTo: function(e) { - f(function() { - i("invokeMiniProgramAPI", { - name: "navigateTo", - arg: { - url: e.url - } - }, - e) - }) - }, - redirectTo: function(e) { - f(function() { - i("invokeMiniProgramAPI", { - name: "redirectTo", - arg: { - url: e.url - } - }, - e) - }) - }, - switchTab: function(e) { - f(function() { - i("invokeMiniProgramAPI", { - name: "switchTab", - arg: { - url: e.url - } - }, - e) - }) - }, - reLaunch: function(e) { - f(function() { - i("invokeMiniProgramAPI", { - name: "reLaunch", - arg: { - url: e.url - } - }, - e) - }) - }, - postMessage: function(e) { - f(function() { - i("invokeMiniProgramAPI", { - name: "postMessage", - arg: e.data || {} - }, - e) - }) - }, - getEnv: function(n) { - f(function() { - n({ - miniprogram: "miniprogram" === e.__wxjs_environment - }) - }) - } - } - }, - b = 1, - R = {}; - return S.addEventListener("error", - function(e) { - if (!M) { - var n = e.target, - i = n.tagName, - t = n.src; - if (("IMG" == i || "VIDEO" == i || "AUDIO" == i || "SOURCE" == i) && -1 != t.indexOf("wxlocalresource://")) { - e.preventDefault(), - e.stopPropagation(); - var o = n["wx-id"]; - if (o || (o = b++, n["wx-id"] = o), R[o]) return; - R[o] = !0, - wx.ready(function() { - wx.getLocalImgData({ - localId: t, - success: function(e) { - n.src = e.localData - } - }) - }) - } - } - }, - !0), - S.addEventListener("load", - function(e) { - if (!M) { - var n = e.target, - i = n.tagName; - n.src; - if ("IMG" == i || "VIDEO" == i || "AUDIO" == i || "SOURCE" == i) { - var t = n["wx-id"]; - t && (R[t] = !1) - } - } - }, - !0), - n && (e.wx = e.jWeixin = N), - N - } -}); \ No newline at end of file +}); diff --git a/index.original.js b/index.original.js index 9d66191..1d48001 100644 --- a/index.original.js +++ b/index.original.js @@ -1,2 +1,2 @@ -// from http://res.wx.qq.com/open/js/jweixin-1.4.0.js -!function(e,n){"function"==typeof define&&(define.amd||define.cmd)?define(function(){return n(e)}):n(e,!0)}(this,function(e,n){function i(n,i,t){e.WeixinJSBridge?WeixinJSBridge.invoke(n,o(i),function(e){c(n,e,t)}):u(n,t)}function t(n,i,t){e.WeixinJSBridge?WeixinJSBridge.on(n,function(e){t&&t.trigger&&t.trigger(e),c(n,e,i)}):t?u(n,t):u(n,i)}function o(e){return e=e||{},e.appId=C.appId,e.verifyAppId=C.appId,e.verifySignType="sha1",e.verifyTimestamp=C.timestamp+"",e.verifyNonceStr=C.nonceStr,e.verifySignature=C.signature,e}function r(e){return{timeStamp:e.timestamp+"",nonceStr:e.nonceStr,package:e.package,paySign:e.paySign,signType:e.signType||"SHA1"}}function a(e){return e.postalCode=e.addressPostalCode,delete e.addressPostalCode,e.provinceName=e.proviceFirstStageName,delete e.proviceFirstStageName,e.cityName=e.addressCitySecondStageName,delete e.addressCitySecondStageName,e.countryName=e.addressCountiesThirdStageName,delete e.addressCountiesThirdStageName,e.detailInfo=e.addressDetailInfo,delete e.addressDetailInfo,e}function c(e,n,i){"openEnterpriseChat"==e&&(n.errCode=n.err_code),delete n.err_code,delete n.err_desc,delete n.err_detail;var t=n.errMsg;t||(t=n.err_msg,delete n.err_msg,t=s(e,t),n.errMsg=t),(i=i||{})._complete&&(i._complete(n),delete i._complete),t=n.errMsg||"",C.debug&&!i.isInnerInvoke&&alert(JSON.stringify(n));var o=t.indexOf(":");switch(t.substring(o+1)){case"ok":i.success&&i.success(n);break;case"cancel":i.cancel&&i.cancel(n);break;default:i.fail&&i.fail(n)}i.complete&&i.complete(n)}function s(e,n){var i=e,t=v[i];t&&(i=t);var o="ok";if(n){var r=n.indexOf(":");"confirm"==(o=n.substring(r+1))&&(o="ok"),"failed"==o&&(o="fail"),-1!=o.indexOf("failed_")&&(o=o.substring(7)),-1!=o.indexOf("fail_")&&(o=o.substring(5)),"access denied"!=(o=(o=o.replace(/_/g," ")).toLowerCase())&&"no permission to execute"!=o||(o="permission denied"),"config"==i&&"function not exist"==o&&(o="ok"),""==o&&(o="fail")}return n=i+":"+o}function d(e){if(e){for(var n=0,i=e.length;n0){var n=e.split("?")[0],i=e.split("?")[1];return n+=".html",void 0!==i?n+"?"+i:n}}if(!e.jWeixin){var h={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",openEnterpriseRedPacket:"getRecevieBizHongBaoRequest",startSearchBeacons:"startMonitoringBeacons",stopSearchBeacons:"stopMonitoringBeacons",onSearchBeacons:"onBeaconsInRange",consumeAndShareCard:"consumedShareCard",openAddress:"editAddress"},v=function(){var e={};for(var n in h)e[h[n]]=n;return e}(),S=e.document,I=S.title,y=navigator.userAgent.toLowerCase(),_=navigator.platform.toLowerCase(),k=!(!_.match("mac")&&!_.match("win")),w=-1!=y.indexOf("wxdebugger"),T=-1!=y.indexOf("micromessenger"),M=-1!=y.indexOf("android"),P=-1!=y.indexOf("iphone")||-1!=y.indexOf("ipad"),x=function(){var e=y.match(/micromessenger\/(\d+\.\d+\.\d+)/)||y.match(/micromessenger\/(\d+\.\d+)/);return e?e[1]:""}(),A={initStartTime:p(),initEndTime:0,preVerifyStartTime:0,preVerifyEndTime:0},V={version:1,appId:"",initTime:0,preVerifyTime:0,networkType:"",isPreVerifyOk:1,systemType:P?1:M?2:-1,clientVersion:x,url:encodeURIComponent(location.href)},C={},L={_completes:[]},B={state:0,data:{}};f(function(){A.initEndTime=p()});var O=!1,E=[],N={config:function(e){C=e,u("config",e);var n=!1!==C.check;f(function(){if(n)i(h.config,{verifyJsApiList:d(C.jsApiList)},function(){L._complete=function(e){A.preVerifyEndTime=p(),B.state=1,B.data=e},L.success=function(e){V.isPreVerifyOk=0},L.fail=function(e){L._fail?L._fail(e):B.state=-1};var e=L._completes;return e.push(function(){l()}),L.complete=function(n){for(var i=0,t=e.length;i0){var n=E.shift();wx.getLocalImgData(n)}},e))):E.push(e)},getNetworkType:function(e){var n=function(e){var n=e.errMsg;e.errMsg="getNetworkType:ok";var i=e.subtype;if(delete e.subtype,i)e.networkType=i;else{var t=n.indexOf(":"),o=n.substring(t+1);switch(o){case"wifi":case"edge":case"wwan":e.networkType=o;break;default:e.errMsg="getNetworkType:fail"}}return e};i("getNetworkType",{},(e._complete=function(e){e=n(e)},e))},openLocation:function(e){i("openLocation",{latitude:e.latitude,longitude:e.longitude,name:e.name||"",address:e.address||"",scale:e.scale||28,infoUrl:e.infoUrl||""},e)},getLocation:function(e){e=e||{},i(h.getLocation,{type:e.type||"wgs84"},(e._complete=function(e){delete e.type},e))},hideOptionMenu:function(e){i("hideOptionMenu",{},e)},showOptionMenu:function(e){i("showOptionMenu",{},e)},closeWindow:function(e){i("closeWindow",{},e=e||{})},hideMenuItems:function(e){i("hideMenuItems",{menuList:e.menuList},e)},showMenuItems:function(e){i("showMenuItems",{menuList:e.menuList},e)},hideAllNonBaseMenuItem:function(e){i("hideAllNonBaseMenuItem",{},e)},showAllNonBaseMenuItem:function(e){i("showAllNonBaseMenuItem",{},e)},scanQRCode:function(e){i("scanQRCode",{needResult:(e=e||{}).needResult||0,scanType:e.scanType||["qrCode","barCode"]},(e._complete=function(e){if(P){var n=e.resultStr;if(n){var i=JSON.parse(n);e.resultStr=i&&i.scan_code&&i.scan_code.scan_result}}},e))},openAddress:function(e){i(h.openAddress,{},(e._complete=function(e){e=a(e)},e))},openProductSpecificView:function(e){i(h.openProductSpecificView,{pid:e.productId,view_type:e.viewType||0,ext_info:e.extInfo},e)},addCard:function(e){for(var n=e.cardList,t=[],o=0,r=n.length;o