美文网首页我爱编程
JS与OC交互大总结之二--OC调用JS

JS与OC交互大总结之二--OC调用JS

作者: 摸着石头过河_崖边树 | 来源:发表于2017-05-04 22:02 被阅读368次

我们接着来聊一聊JS与OC交互的那些事儿。
上一篇只介绍的了JS调用OC的方法:
JS与OC交互大总结之一 JS调用OC

这一篇聊聊OC调用JS的方法:
示例代码:
LZBWebViewWithJSInteractive github下载链接

OC调用JS的方法###

第一种:

利用WebView的stringByEvaluatingJavaScriptFromString方法调用JS代码

第二种:

利用系统框架<JavaScriptCore/JavaScriptCore.h>的JSContext 类的evaluateScript调用JS的方法

详细解说###

1、利用stringByEvaluatingJavaScriptFromString方法,这个比较简单,我们也在经常使用,就是把需要的JS代码写入到WebView的JS运行环境中

   NSString *param = @"OC调用JS参数http://www.jianshu.com/users/d21698127416/latest_articles";    //写入JS的参数
   //调用JS的callJS方法,并且传入param参数,这里要注意参数使用的是单引号‘’
   NSString *js = [NSString stringWithFormat:@"callJS('%@')",param];
  //把JS传入WebView的运行环境中
   NSString *string = [self.webView stringByEvaluatingJavaScriptFromString:js];

JS端的核心代码:

<script type="text/javaScript">
            function callJS(param)  //函数实现callJS
            {
                alert(param);
            }
        </script>

2、利用系统框架实现
使用的步骤:
① 加载网页,我这里是示例是加载本地的html

NSString *path = [[NSBundle mainBundle] pathForResource:@"OCtoJStwoIndex.html" ofType:nil];
NSURL *localURL = [[NSURL alloc]initFileURLWithPath:path];
[self.webView loadRequest:[NSURLRequest requestWithURL:localURL]];

② 获取webView的运行环境对象,其实我们很多操作都是围绕着它来的

  //获得WebView的运行环境的对象
JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

③ 定义调用JS方法的字符串,如果有参数可以传入参数

//调用方法(注意:这里是JS里面的定义的方法)
NSString *callJSstring = @"sendJSString('参数:OC call JS test 子木')";

注意:参数还是单引号

④ 利用JSContext的对象方法- (JSValue *)evaluateScript:(NSString *)script;把JS的字符串写入到运行环境中

  [context evaluateScript:callJSstring];

这样就利用苹果框架实现OC调用JS,比较简单吧!

小结一下###

OC调用JS两个方法:
1、stringByEvaluatingJavaScriptFromString方法
2、 JSContext 的 (JSValue *)evaluateScript:(NSString *)script方法

最后赠言###

star 是对我最大的鼓励

相关文章

网友评论

    本文标题:JS与OC交互大总结之二--OC调用JS

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