@dead_fish/jsbridge
Version:
A lightweight and easy-to-use jsBridge for Android and IOS platforms.
2 lines (1 loc) • 2.62 kB
JavaScript
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).dhLib={})}(this,(function(e){"use strict";var n={parseUrl:function(e){var n=window.location.href.split("?").slice(1),i={};return n.forEach((function(e){var n=e.indexOf("/");(-1!==n?e.substring(0,n):e).split("&").forEach((function(e){var n=e.split("="),t=n[0],r=n[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!==e?i[e]||void 0:i}};function i(e){return"[object Function]"===Object.prototype.toString.call(e)}function t(){return/Android/i.test(window.navigator.userAgent)}function r(){return/iPhone|iPad|iPod/i.test(window.navigator.userAgent)}function o(){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 a(e){if("string"!=typeof e)return!1;try{return JSON.parse(e),!0}catch(e){return!1}}function d(e){if(window.WebViewJavascriptBridge)return e(window.WebViewJavascriptBridge);if(window.WVJBCallbacks)return window.WVJBCallbacks.push(e);window.WVJBCallbacks=[e];var n=document.createElement("iframe");n.style.display="none",n.src="wvjbscheme://__BRIDGE_LOADED__",document.documentElement.appendChild(n),setTimeout((function(){document.documentElement.removeChild(n)}),0)}function s(e){if(window.WebViewJavascriptBridge)return e(window.WebViewJavascriptBridge);document.addEventListener("WebViewJavascriptBridgeReady",(function(){return e(window.WebViewJavascriptBridge)}),!1)}!function(){if(!t())return!1;s((function(e){var n;return null===(n=null==e?void 0:e.init)||void 0===n?void 0:n.call(e)}))}();var u={registerHandler:function(e){var n=e.eventName,i=e.handler,o=function(e){e.registerHandler(n,(function(e,n){a(e)&&(e=JSON.parse(e)),"function"==typeof i&&i(e,n)})),"function"!=typeof i&&e.registerHandler(n,i)};t()&&s(o),r()&&d(o)},callHandler:function(e){var n=e.eventName,u=e.handler,c=e.data,f=void 0===c?"":c,l=function(e){e.callHandler(n,f,(function(e){a(e)&&(e=JSON.parse(e)),"function"==typeof u&&u(e)}))};if(t()&&s(l),r()&&d(l),o()){var w=n.split("."),v=w.slice(0,w.length-1),p=w[w.length-1],g=window;v.forEach((function(e){return g=g[e]})),p?i(g)&&g(p,f,u):i(g)&&g(f,u)}}},c={jsBridge:u,utils:n,isAndroid:t,isHarmonyOS:o,isIOS:r};e.default=c,e.isAndroid=t,e.isHarmonyOS=o,e.isIOS=r,e.jsBridge=u,e.utils=n,Object.defineProperty(e,"__esModule",{value:!0})}));