H5原生交互中jsBridge文件引入后可交互

这篇博客介绍了在iOS和Android中如何使用WebViewJavascriptBridge进行JavaScript与原生代码的交互。在iOS中,通过设置iframe来触发加载并回调函数;在Android中,监听WebViewJavascriptBridgeReady事件来建立连接。同时,展示了初始化方法、注册回调函数以及调用和响应的示例代码。
摘要由CSDN通过智能技术生成
//ios
function setupWebViewJavascriptBridge(callback) {
    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 = 'wvjbscheme://__BRIDGE_LOADED__';
    document.documentElement.appendChild(WVJBIframe);
    setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)
  }
  setupWebViewJavascriptBridge();
  
  //安卓注册事件监听
  function connectWebViewJavascriptBridge(callback) {
      if (window.WebViewJavascriptBridge) {
          callback(WebViewJavascriptBridge)
      } else {
          document.addEventListener(
              'WebViewJavascriptBridgeReady'
              , function() {
                  callback(WebViewJavascriptBridge)
              },
              false
          );
      }
  }
//注册回调函数,第一次连接时调用 初始化函数
 connectWebViewJavascriptBridge(function(bridge) {
       //初始化
      bridge.init(function(message, responseCallback) {
          //var data = {'Javascript Responds': 'Wee!'};
          responseCallback(data);
      });
      //Android调用js方法:functionInJs方法名称需要保持一致 ,并返回给Android通知
      bridge.registerHandler("functionInJs", function(data, responseCallback) {
          responseCallback(data);
      });
  })



export default {
    //js调APP方法 (参数分别为:app提供的方法名  传给app的数据  回调)
    callhandler: function (method, params, callback) {
        setupWebViewJavascriptBridge(function (bridge) {
            bridge.callHandler(method, params, callback)
        })
    },

    // APP调js方法 (参数分别为:js提供的方法名  回调)
    registerHandler(method, callback) {
        setupWebViewJavascriptBridge((bridge) => {
            bridge.registerHandler(method, (data, responseCallback) => {
                callback(data, responseCallback)
            })
        })
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值