iOS OC与JS,JS与OC交互

本文主要介绍一下OC与JS交互的使用方法,首先苹果已经为我们封装好了一个与JS交互的框架,JavaScriptCore.framework,我们导入该框架,并导入头文件

#import <JavaScriptCore/JavaScriptCore.h>

该框架的使用方法特别简单,所有方法只需写在 

webViewDidFinishLoad方法中即可:


1、JS调用OC用两种方法,小弟只研究了最简单的一种

// 首先创建JSContext 对象(此处通过当前webView的键获取到jscontext)

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

context[@"ShowDetailPage"] = ^() {

   NSArray *args = [JSContext currentArguments];

   for (JSValue *jsVal in args) {

       NSString *paramStr = [jsVal toString];

   }

};

这样就简单的实现了一个JS调用OC的方法,下面我简单说明一下,context[@"方法名"],该方法名需要与前端的方法名一致,这样当H5页面调用该方法的时候,就会自动调用我们在 webViewDidFinishLoad中写好的方法了;for (JSValue *jsVal in args)该遍历方法的意思是获取到前端传给我们的参数,我们获取到的参数用数组来接收,有可能有一个参数也有可能有多个参数;NSString *paramStr = [jsVal toString] 该方法的意思是将获取到得参数转成字符串来接收,因为前端传过来的参数全为字符串格式,所有我接收的方式也就全是字符串,如果传过来多个的参数,可以在遍历的外部初始化一个可变数组,然后在遍历内部将获取到得参数addobject到该可变数组内,这样,我们就简单的完成了一个JS调用OC的方法,我们可以在该方法内部根据获取到得参数做我们想做的事情了;

如果各位还不明白可以参考下边的链接,该链接里还讲了另外一种方法,跟上边这个方法区别不算太大,也很好理解

http://blog.csdn.net/lwjok2007/article/details/47058795


2、OC调用JS方法,目前也有两种方法可用,一个是JavaScriptCore框架中的方法,一个就是webView自带的方法

NSString *jsFunctStr = [NSString stringWithFormat:@"方法名('%@', '%@', '%@')", @"", @"", @""];

[context evaluateScript:jsFunctStr];

该方法为JavaScriptCore框架中的方法,注意的是,也需要创建context对象,例如1中的第一句话,@"方法名('%@', '%@', '%@')", @"", @"", @""这个就是调用了JS上的方法,后边是我们客户端为前端传得参数,前端拿到参数继续做其他的一些操作;


NSString *jsFunctStr = [NSString stringWithFormat:@"方法名('%@', '%@', '%@')", @"", @"", @""];

[webView stringByEvaluatingJavaScriptFromString:jsFunctStr];

这个就是webView自带的调用JS的方法,道理同上,以下是OC调用JS的参考链接:

http://blog.csdn.net/lwjok2007/article/details/47058101



注意:JS调用OC的方法需要全部写在webViewDidFinishLoad中,需要提前将这些方法渲染出来


这样基本上就可以实现OC调用JS,JS调用OC了,与前端配合,或者自己学习下JS,自己写个JS demo,多加练习,相信你很快就可以掌握



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值