美文网首页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