WebViewJavascriptBridge同时支持UIWeView和WKWebView,无论是JS调用OC还是OC调用JS,都可以正常传值和返回值;而且在页面加载时只要JS代码被运行就可以进行交互,是现在处理交互的主流做法。
- 1.初始化webViewBridge
_webViewBridge = [WKWebViewJavascriptBridge bridgeForWebView:self.webView];
[_webViewBridge setWebViewDelegate:self];
- 2.注册Native方法
#pragma mark – Private Methods
- (void)registLocationFunction {
[_webViewBridge registerHandler:@"getLocation" handler:^(id data, WVJBResponseCallback responseCallback) {
// 获取位置信息
···
NSString *locationStr = @"广东省深圳市南山区高新南一道TCL大厦";
// 将结果返回给js
responseCallback(locationStr);
}];
}
- 3.JS调用OC
function locationClick() {
WebViewJavascriptBridge.callHandler('getLocation',null,function(response) {
alert(response);
document.getElementById("returnValue").value = response;
});
}
- 4.OC调用JS
[_webViewBridge callHandler:@"testJSFunction" data:@"一个字符串" responseCallback:^(id responseData) {
NSLog(@"调用完JS后的回调:%@",responseData);
}];
- 5.JS响应OC调用
setupWebViewJavascriptBridge(function(bridge) {
bridge.registerHandler('testJSFunction', function(data, responseCallback) {
alert('JS方法被调用:'+data);
responseCallback('js执行过了');
})
})