您的位置:首页 > Web前端 > JavaScript

转载 OS js oc相互调用(JavaScriptCore) ---js调用iOS ---js里面直接调用方法

2016-10-21 15:49 661 查看

OS js oc相互调用(JavaScriptCore)

接着上节我们讲到的iOS调用js

下来我们使用js调用iOS

js调用iOS分两种情况

一,js里面直接调用方法

二,js里面通过对象调用方法

首先我们看第一种,直接调用方法。

其中用到了iOS的block

上代码

[objc] view plain copy







-(void)webViewDidFinishLoad:(UIWebView *)webView

{

//网页加载完成调用此方法

//iOS调用js

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

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

//js调用iOS

//第一种情况

//其中test1就是js的方法名称,赋给是一个block 里面是iOS代码

//此方法最终将打印出所有接收到的参数,js参数是不固定的 我们测试一下就知道

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

NSArray *args = [JSContext currentArguments];

for (id obj in args) {

NSLog(@"%@",obj);

}

};

//此处我们没有写后台(但是前面我们已经知道iOS是可以调用js的,我们模拟一下)

//首先准备一下js代码,来调用js的函数test1 然后执行

//一个参数

NSString *jsFunctStr=@"test1('参数1')";

[context evaluateScript:jsFunctStr];

//二个参数

NSString *jsFunctStr1=@"test1('参数a','参数b')";

[context evaluateScript:jsFunctStr1];

}

以上代码中 给test1赋值的block要是执行了那么结果就是对的,js调用了iOS

我们看结果






我们看到参数被打印出来了,而且一个参数和两个参数都可以,也符合js参数个数不限制
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: