美文网首页IOS三人行
JavaScriptCore使用

JavaScriptCore使用

作者: 面试小集 | 来源:发表于2016-05-14 23:03 被阅读345次

简介

JavaScriptCore是iOS7引入的,用来方便OC与JS的交互,本文主要禅述JS调用OC方法。

使用

引入JavaScriptCore库

#import <JavaScriptCore/JavaScriptCore.h>

通过JSContext关联JS与OC代码。

在webView的webViewDidFinishLoad方法中获取JS运行上下文

self.context = [webView valueForKeyPath:@
"documentView.webView.mainFrame.javaScriptContext"
];

JS调用OC方法有两种:
一种是通过Block。
另一种是注册协议。好处是:为所有被JS调用的方法提供一个域,防止与其他代码混淆。另一个好处是方法前端同时适配android和iOS程序。

设置作用域

self.context[@"HongLingLin_APP"] = self;

创建一个协议,该协议中提供所有JS调用的方法。

@protocol TestJSExport <JSExport>
JSExportAs
(calculateForJS  /** handleFactorialCalculateWithNumber 作为js方法的别名 */,
 - (void)handleFactorialCalculateWithNumber:(NSNumber *)number
 );
- (void)pushViewController:(NSString *)view title:(NSString *)title;
@end

实现TestJSExport
在webView的VC里面去设置

  self.context[@"HongLingLin_APP"] = self; 

并实现协议。

在JS中通过

HongLingLin_APP.pushViewControllerTitle(
'SecondViewController'
,
'secondPushedFromJS'
)

就会调用TestJSExport协议的具体方法。

参考资料
https://github.com/shaojiankui/JavaScriptCore-Demo.git
http://nscoder.me/blog/2014/04/11/JavaScriptCoreSample/

相关文章

网友评论

    本文标题:JavaScriptCore使用

    本文链接:https://www.haomeiwen.com/subject/knhvrttx.html