ym-mpbridge
Version:
一门小程序 js SDK
2 lines • 4.94 kB
JavaScript
/*20241227*/
!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=t(e):e.mpBridge=t(e)}("object"==typeof window?window:this,function(e){var t={},o=function(e,o){Object.defineProperty(t,e,{configurable:!1,writable:!1,value:o})},n=navigator.userAgent||"";o("isWx",/MicroMessenger.*miniProgram/i.test(n)),o("isAlipay",/Alipay.*MiniProgram/i.test(n)),o("isTt",/toutiaomicroapp/i.test(n)),o("isQq",/QQ.*miniProgram/i.test(n)),o("isBaidu",/swan\//.test(n)||/^webswan-/.test(e.name)),o("isJd",/JD.*miniProgram/i.test(n)),o("isKs",/kwapp.*miniProgram/i.test(n)),o("inMp",t.isWx||t.isAlipay||t.isTt||t.isQq||t.isBaidu||t.isJd||t.isKs);var i=function(e,t){console.error(t),e&&e(!1,{error:t})},s={},a={};o("on",function(e,t){var o=s[e];return!!o&&(t&&t(o.success,o.data),delete s[e],!0)});var r=function(e){var t=a[e.on];if(t){try{t(e.success,e.data)}catch(e){console.error(e)}delete a[e.on]}},c=0,l=function(e){var t,o,n="xapp-mp-cbs=",i=location.hash;if(i&&((t=i.lastIndexOf(o="#"+n))>=0||(t=i.lastIndexOf(o="%23"+n))>=0)){for(var a=JSON.parse(decodeURIComponent(i.substr(t+o.length))),c=0,l=a.length;c<l;c++){var u=a[c];if(u&&u.data&&u.data._&&delete u.data._,e)r(u);else if(u.on){var p=u.on.substr(2,1).toLowerCase()+u.on.substr(3);s[p]={success:u.success,data:u.data}}}e&&history.back()}};l(0);var u=function(o,n){if(n)if(a[o]=n,t.isAlipay){var i=p();i&&!i.onMessage&&(i.onMessage=r)}else c||(e.addEventListener("hashchange",function(){l(1)}),c=1)},p=function(e,o){var n,s;return t.isWx?n="object"==typeof wx?o?wx:wx.miniProgram:0:t.isAlipay?n="object"==typeof my?my:0:t.isTt?(n="object"==typeof tt?o?tt:tt.miniProgram:0,o&&n&&!n.getLocation&&(n.getLocation=function(t){u("onGetLocation",e),h("location_get",t,1,e)},n.openLocation=function(t){u("onOpenLocation",e),h("location_open",t,1,e)})):t.isQq?n="object"==typeof qq?o?qq:qq.miniProgram:0:t.isBaidu?n="object"==typeof swan?o?swan:swan.webView:0:t.isJd?n="object"==typeof jd?o?jd:jd.miniProgram:0:t.isKs&&(n="object"==typeof ks?ks:0)&&!n.getLocation&&(n.getLocation=function(t){u("onGetLocation",e),h("location_get",t,1,e)}),null==n?s=t.isWx&&wx?"js 冲突,请移除微信公众号 js SDK 引用。":"此接口仅能运行在小程序环境中":0==n&&(s="未引用小程序平台官方 js 库,可将 mpBridge.ready 的第二个参数设为 true 自动引用。"),s&&i(e,s),n},f=0,d=0,g=[];o("ready",function(e,o){o?function(e){if(t.isKs&&(f=1,d=1),f)d?e&&e(t):e&&g.push(e);else{var o;if(f=1,t.isWx)o="https://res.wx.qq.com/open/js/jweixin-1.3.2.js";else if(t.isAlipay)o="https://appx/web-view.min.js";else if(t.isTt)o="https://lf1-cdn-tos.bytegoofy.com/goofy/developer/jssdk/jssdk-1.1.0.js";else if(t.isQq)o="https://qqq.gtimg.cn/miniprogram/webview_jssdk/qqjssdk-1.0.0.js";else if(t.isBaidu)o="https://b.bdstatic.com/searchbox/icms/searchbox/js/swan-2.0.30.js";else{if(!t.isJd)return void console.error("此接口仅能运行在小程序环境中");o="https://storage.360buyimg.com/api-test/jssdk.js"}e&&g.push(e);var n=function(e){if("load"===e.type||/^(complete|loaded)$/.test((e.currentTarget||e.srcElement).readyState)){d=1;for(var o=0;o<g.length;o++)g[o](t);g=null}},i=document.createElement("script");i.type="text/javascript",i.charset="utf-8",i.async=!0,i.addEventListener?i.addEventListener("load",n,!1):i.attachEvent("onreadystatechange",n),i.src=o,(document.head||document.getElementsByTagName("head")[0]).appendChild(i)}}(e):e&&e(t)});var m=function(e,t,o){if(!e)return i(o,"此小程序平台不支持本接口"),0;var n=t||{};return o&&(n.success=function(e){o(!0,e)},n.fail=function(e){var t=e.errMsg||(e.error?e.error+":"+e.errorMessage:"")||"失败";i(o,t)}),e(n),1},y={navigateTo:{r:0},redirectTo:{r:0},navigateBack:{r:0},switchTab:{r:0},reLaunch:{r:0},getLocation:{r:1},openLocation:{r:1}};for(var v in y)o(v,function(e,o){return function(n,i){t.isAlipay&&"getLocation"==e&&n&&"number"!=typeof n.type&&(n.type=1),console.log("call:",e,n);var s=p(i,o.r);s&&m(s[e],n,i)}}(v,y[v]));var h=function(e,o,n,i){n&&(o={u:location.href,d:JSON.stringify(o||{})});var s="";if(o)for(v in o)s+=(s?"&":"")+v+"="+encodeURIComponent(o[v]);p(i)&&t.navigateTo({url:"/pages/_ym/"+e+"?"+s})};return o("open",function(e,t){e&&e.url&&h("web",e,0,t)}),o("postMessage",function(e,t){console.log("call:","postMessage",e);var o=p(t);o&&(o.postMessage({data:e}),t&&t(!0,{}))}),o("login",function(e,o){console.log("call:","login",e),u("onLogin",o),t.isAlipay?t.postMessage({on:"onLogin",data:e}):h("login",e,1,o)}),o("pay",function(e,o){if(console.log("call:","pay",e),t.isAlipay){var n=p(o);n&&m(n.tradePay,e,o)}else u("onPay",o),h("pay",e,1,o)}),o("getPhoneNumber",function(e,t){console.log("call:","getPhoneNumber",e),u("onGetPhoneNumber",t),h("phone_number",e,1,t)}),o("execute",function(e,t){console.log("call:","execute",e),u("onExecute",t),h("execute",e,1,t)}),o("shareImage",function(e,t){console.log("call:","shareImage",e),h("share_image",e,1,t)}),t});