JavaScriptCore使用

简介

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的使用,为自己做个记录。JavaScriptCore 是...
    常绿箩阅读 881评论 0 1
  • 随着H5技术的兴起,在iOS开发过程中,难免会遇到原生应用需要和H5页面交互的问题。其中会涉及方法调用及参数传值等...
    Chris_js阅读 3,161评论 1 8
  • JavaScriptCore JavaScriptCore是webkit的一个重要组成部分,主要是对JS进行解析和...
    JamesYu阅读 56,282评论 22 199
  • 在本系列交互文章中,第一篇的第二种方法已经简单介绍过使用的方式了,这里再单独拎出来补充以下细节。(以下步骤,因为是...
    杭州七木科技阅读 490评论 0 0
  • 用条件语句测试某对象是否存在于列表、字符串、字典变量中 (一) (二) (三) 立个flag,flag=True,...
    TianAff阅读 183评论 0 3