WebViewJavascriptBridge初识

摘要: 网上关于原生和JS的调用的介绍很多,github上使用方法介绍的很清晰,本文只是对其整理,方便以后查看。

1、WebViewJavascriptBridge资源 github代码资源

原理:

2、使用Usage
2.1 导入头文件
import "WebViewJavascriptBridge.h
// 声明变量
@property WebViewJavascriptBridge* bridge;
2.2 将创建的webview 添加桥接
self.bridge = [WebViewJavascriptBridge bridgeForWebView:webView];
2.3 原生

registerHandler~~~原生处理
callHandler~~~JS处理


原生响应JS调用 和 原生调用JS

// 原生响应JS:原生注册testObjcCallback方法,当JS被触发时,原生可以响应并处理;
[self.bridge registerHandler:@"testObjcCallback"
                     handler:^(id data, WVJBResponseCallback responseCallback){

    NSLog(@"testObjcCallback called: %@", data);
    responseCallback(data);
}];

// 原生调用JS: 当原生被触发时,原生调用testJavascriptHandler,JS可以响应并处理
[self.bridge callHandler:@"testJavascriptHandler"
                   data:nil 
       responseCallback:^(id responseData){

    NSLog(@"testJavascriptHandler responded: %@", responseData);
}];
2.4 JS处理
2.4.1 将下面一段代码Copy到你的JS中
 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 = 'http://__bridge_loaded__';
    document.documentElement.appendChild(WVJBIframe);
    setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)
}
2.4.2 最后, JS 中实现 setupWebViewJavascriptBridge 方法,并且用桥接去注册方法和实现ObjC方法响应
setupWebViewJavascriptBridge(function(bridge) 
{
    /* Initialize your app here */
     // JS调用原生:
    bridge.registerHandler('testObjcCallback', function(data, responseCallback) {
        console.log("JS testObjcCallback called with:", data)
        responseCallback(data)
    })
     //JS响应原生调用 :/
    bridge.callHandler('testJavascriptHandler', {'key':'value'}, function responseCallback(responseData) {
        console.log("JS received response:", responseData)
    })
})
3、优缺点

【优】可以实现原生和H5之间的交互
【缺】每次新加方法必须更新原生,不能实现热更新

4、值得看的博客

http://www.cnblogs.com/TheYouth/p/5854467.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值