bridge.js 1.26 KB
Newer Older
leiqingsong's avatar
leiqingsong committed
1
var u = navigator.userAgent;
leiqingsong's avatar
leiqingsong committed
2
var isAndroid = u.indexOf("Android") > -1 || u.indexOf("Adr") > -1; //android终端
leiqingsong's avatar
leiqingsong committed
3 4 5
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
// 注册jsbridge
function connectWebViewJavascriptBridge(callback) {
leiqingsong's avatar
leiqingsong committed
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
  if (isAndroid) {
    if (window.WebViewJavascriptBridge) {
      callback(WebViewJavascriptBridge);
    } else {
      document.addEventListener(
        "WebViewJavascriptBridgeReady",
        function() {
          callback(WebViewJavascriptBridge);
        },
        false
      );
    }
    return;
  }
  if (isiOS) {
    if (window.WebViewJavascriptBridge) {
      return callback(WebViewJavascriptBridge);
    }
    if (window.WVJBCallbacks) {
      return window.WVJBCallbacks.push(callback);
    }
    window.WVJBCallbacks = [callback];
    var WVJBIframe = document.createElement("iframe");
    WVJBIframe.style.display = "none";
    WVJBIframe.src = "https://__bridge_loaded__";
    document.documentElement.appendChild(WVJBIframe);
    setTimeout(function() {
      document.documentElement.removeChild(WVJBIframe);
    }, 0);
  }
leiqingsong's avatar
leiqingsong committed
36 37
}
// 调用注册方法
leiqingsong's avatar
leiqingsong committed
38 39 40 41 42 43 44
connectWebViewJavascriptBridge(function(bridge) {
  if (isAndroid) {
    bridge.init(function(message, responseCallback) {
      responseCallback(data);
    });
  }
});