关于js调用oc

首先:要在项目导入

JavaScriptCore.frameWork

在webview的控制器.h中引用

#import <JavaScriptCore/JavaScriptCore.h>

 

 

然后:我们可以在

- (void)webViewDidFinishLoad:(UIWebView *)webView方法中

通过

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

获取一个JSContext 对象 

这个对象我理解为 js的控制中心

 

现在有两种方法让js调用我们自己的方法

1.直接给context对象赋值一个block方法: 

context[@"block"] = ^(参数){};

js可以直接调用:

block(参数)

 

2.将webView控制器的self对象 赋值给context对象的一个子类 : 

context[@"zhaozhi"] = self;

 这样js就可以通过对象调用方法,但是要在.h中写一个协议,方法写在里面:

@protocol WebViewJSExport <JSExport>

 

-(void)goToExplosionDetail:(NSString *)message;

 

@end

控制器遵守这个协议

js就可以调用这个方法了,调用代码:

zhaozhi.method(***);

 

posted @ 2015-09-10 14:14  zz1230  阅读(182)  评论(0)    收藏  举报