bridge.js 935 Bytes
Newer Older
leiqingsong's avatar
leiqingsong committed
1 2 3
function setupWebViewJavascriptBridge(callback) {
  if (window.WebViewJavascriptBridge) {
    return callback(window.WebViewJavascriptBridge);
leiqingsong's avatar
leiqingsong committed
4
  }
leiqingsong's avatar
leiqingsong committed
5 6
  if (window.WVJBCallbacks) {
    return window.WVJBCallbacks.push(callback);
leiqingsong's avatar
leiqingsong committed
7
  }
leiqingsong's avatar
leiqingsong committed
8 9 10 11 12 13 14 15
  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);
leiqingsong's avatar
leiqingsong committed
16
}
leiqingsong's avatar
leiqingsong committed
17 18 19 20 21 22 23 24 25 26 27
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);
      });
leiqingsong's avatar
leiqingsong committed
28 29
    });
  }
leiqingsong's avatar
leiqingsong committed
30
};