在iOS 7之后,apple添加了一个新的库JavaScriptCore,用来做JS交互,因此JS与原生OC交互也变得简单了许多。
第一种方法
-
首先导入JavaScriptCore库, 然后在OC中获取JS的上下文
JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
-
再然后定义好JS需要调用的方法,
JSValue *Callback = jsContext[@“方法名字”]; [Callback callWithArguments:@[]];
第二种方法
第三方的框架使用。
在这里推荐一个比较好的第三方库即:WebViewJavascriptBridge
通过使用该库可以轻松实现JS与原生交互。
//初始化WebViewJavascriptBridge方法
_bridge= [WebViewJavascriptBridge bridgeForWebView:self.BookWebView webViewDelegate:self handler:^(id data,WVJBResponseCallback responseCallback) {}];
//原生与JS约定接口名为“testObjcCallback”,data是JS传递过来的信息,responseCallback来将信息传递给JS
[_bridge registerHandler:@“testObjcCallback” handler:^(id data,WVJBResponseCallback responseCallback) {
responseCallback(“postInfomationToJS”)
}];