function setupWebViewJavascriptBridge(callback) { if (window.WebViewJavascriptBridge) { return callback(window.WebViewJavascriptBridge); } if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); } window.WVJBCallbacks = [callback]; let WVJBIframe = document.createElement("iframe"); WVJBIframe.style.display = "none"; WVJBIframe.src = "https://__bridge_loaded__"; document.documentElement.appendChild(WVJBIframe); setTimeout(() => { document.documentElement.removeChild(WVJBIframe); }, 0); } export default { callhandler(name, data, callback) { setupWebViewJavascriptBridge(function(bridge) { bridge.callHandler(name, data, callback); }); }, registerhandler(name, callback) { setupWebViewJavascriptBridge(function(bridge) { bridge.registerHandler(name, function(data, responseCallback) { callback(data, responseCallback); }); }); } };