iOS UIWebView 上JS和OC的交互


最近做一个项目总涉及到了UIWebView中js和oc的交互问题,找了各种资料在此整理一下

1.js调用OC

JS发起一个假的URL请求,然后利用UIWebView的代理方法拦截这次请求,然后再做相应的处理

- (BOOL)webView:(UIWebView *)webViewshouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

NSURL *url = request.URL;

if ([url.scheme isEqualToString:@"taotao"]){

if ([url.host isEqualToString:@"finishFunction"]){

[self popView];

}else if ([url.host isEqualToString:@"showHelp"]){

[self goToHelp];

}

//        else if([url.host isEqualToString:@"changeHelpIndex"]){

//

//获取URL上面的参数

////           NSDictionary *params = [self getParams:[url query]];

////           NSInteger index = [params[@"index"]integerValue];

////           NSLog(@"==%d",index);

//        }else if([url.host isEqualToString:@"setHelpIndexCount"]){

//

//获取URL上面的参数

////           NSDictionary *params = [self getParams:[url query]];

////           NSInteger index = [params[@"indexCount"]integerValue];

////           NSLog(@"==%d",index);

//        }

}

return YES;

}

可以参考www.jianshu.com/p/d19689e0ed83这个地址

2.在iOS 7之后,apple添加了一个新的库JavaScriptCore,用来做JS交互


第一步导入xcode自带的javaScriptCore.framework

第二步#import 导入头文件

第三版 开始写代码

注意项:如果是页面加载完后就要执行的js需要写在

- (void)webViewDidFinishLoad:(UIWebView *)webView{}这个函数里面

如果js实在触发了某个事件后才调用的函数 需要写在didLoad里面

可以参考下面的地址这个介绍的很明确

m.baidu.com/from=844b/bd_page_type=1/ssid=0/uid=0/pu=usm%400%2Csz%401320_2001%2Cta%40iphone_1_9.2_3_601/baiduid=6D29A150F9A7FD626106B23E6A7726A0/w=0_10_JavaScriptCore如何引入/t=iphone/l=3/tc

JavaScriptCore框架在iOS7中的对象交互和管理 – Ider

大家有疑问的可以给我留言

你可能感兴趣的:(iOS UIWebView 上JS和OC的交互)