@dead_fish/jsbridge
Version:
A lightweight and easy-to-use jsBridge for Android and IOS platforms.
2 lines (1 loc) • 2.35 kB
JavaScript
var n={parseUrl:function(n){var e=window.location.href.split("?").slice(1),i={};return e.forEach((function(n){var e=n.indexOf("/");(-1!==e?n.substring(0,e):n).split("&").forEach((function(n){var e=n.split("="),t=e[0],r=e[1],o=void 0===r||r;if(i.hasOwnProperty(t)){var a=i[t];Array.isArray(a)?a.push(o):i[t]=[o]}else i[t]=o}))})),void 0!==n?i[n]||void 0:i}};function e(n){return"[object Function]"===Object.prototype.toString.call(n)}function i(){return/Android/i.test(window.navigator.userAgent)}function t(){return/iPhone|iPad|iPod/i.test(window.navigator.userAgent)}function r(){return/HarmonyOS/i.test(window.navigator.userAgent)||/ohos/i.test(window.navigator.userAgent)||/arkos/i.test(window.navigator.userAgent)||/arkcompiler/i.test(window.navigator.userAgent)||/arkui/i.test(window.navigator.userAgent)}function o(n){if("string"!=typeof n)return!1;try{return JSON.parse(n),!0}catch(n){return!1}}function a(n){if(window.WebViewJavascriptBridge)return n(window.WebViewJavascriptBridge);if(window.WVJBCallbacks)return window.WVJBCallbacks.push(n);window.WVJBCallbacks=[n];var e=document.createElement("iframe");e.style.display="none",e.src="wvjbscheme://__BRIDGE_LOADED__",document.documentElement.appendChild(e),setTimeout((function(){document.documentElement.removeChild(e)}),0)}function u(n){if(window.WebViewJavascriptBridge)return n(window.WebViewJavascriptBridge);document.addEventListener("WebViewJavascriptBridgeReady",(function(){return n(window.WebViewJavascriptBridge)}),!1)}!function(){if(!i())return!1;u((function(n){var e;return null===(e=null==n?void 0:n.init)||void 0===e?void 0:e.call(n)}))}();var d={registerHandler:function(n){var e=n.eventName,r=n.handler,d=function(n){n.registerHandler(e,(function(n,e){o(n)&&(n=JSON.parse(n)),"function"==typeof r&&r(n,e)})),"function"!=typeof r&&n.registerHandler(e,r)};i()&&u(d),t()&&a(d)},callHandler:function(n){var d=n.eventName,c=n.handler,s=n.data,l=void 0===s?"":s,f=function(n){n.callHandler(d,l,(function(n){o(n)&&(n=JSON.parse(n)),"function"==typeof c&&c(n)}))};if(i()&&u(f),t()&&a(f),r()){var w=d.split("."),v=w.slice(0,w.length-1),g=w[w.length-1],p=window;v.forEach((function(n){return p=p[n]})),g?e(p)&&p(g,l,c):e(p)&&p(l,c)}}},c={jsBridge:d,utils:n,isAndroid:i,isHarmonyOS:r,isIOS:t};export{c as default,i as isAndroid,r as isHarmonyOS,t as isIOS,d as jsBridge,n as utils};