接着上节我们讲到的iOS调用js
下来我们使用js调用iOS
js调用iOS分两种情况
一,js里面直接调用方法
二,js里面通过对象调用方法
首先我们看第一种,直接调用方法。
其中用到了iOS的block
上代码
[objc]
1. -(void)webViewDidFinishLoad:(UIWebView *)webView
2. {
3. //网页加载完成调用此方法
4.
5. //iOS调用js
6.
7. //首先创建JSContext 对象(此处通过当前webView的键获取到jscontext)
8. JSContext *context=[webView@"documentView.webView.mainFrame.javaScriptContext"];
9.
10. //js调用iOS
11. //第一种情况
12. //其中test1就是js的方法名称,赋给是一个block 里面是iOS代码
13. //此方法最终将打印出所有接收到的参数,js参数是不固定的 我们测试一下就知道
14. @"test1"] = ^() {
15. NSArray *args = [JSContext currentArguments];
16. for (id obj in args) {
17. @"%@",obj);
18. }
19. };
20. //此处我们没有写后台(但是前面我们已经知道iOS是可以调用js的,我们模拟一下)
21. //首先准备一下js代码,来调用js的函数test1 然后执行
22. //一个参数
23. NSString *jsFunctStr=@"test1('参数1')";
24. evaluateScript:jsFunctStr];
25.
26. //二个参数
27. NSString *jsFunctStr1=@"test1('参数a','参数b')";
28. 1];
29.
30. }
以上代码中 给test1赋值的block要是执行了那么结果就是对的,js调用了iOS
我们看结果
我们看到参数被打印出来了,而且一个参数和两个参数都可以,也符合js参数个数不限制