H5+原生webview实现APP的JavascriptBridge的使用

function setupWebViewJavascriptBridge(callback) {
      try {
        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)
      } catch (e) {
        alert(e)
      }
    }



IOS:
function iosMethod(method, params) {
    setupWebViewJavascriptBridge(function (bridge) {
      try {
        if (params) {
          bridge.callHandler(method, params)
        } else {
          bridge.callHandler(method)
        }
      } catch (e) {
        alert(e)
      }
    })
}

例如:
和ios约定的回调方法名  挂载在window
window.scanResult = function(){}
iosMethod('scan')
Android:
和Android约定的回调方法名  挂载在window
window.scanResult = function(){}
window.android.scan()

 

posted @ 2021-02-18 11:20  心中有一海  阅读(102)  评论(0编辑  收藏  举报