iOS UIWebView 上JS和OC的交互

作者: 小_梦 | 来源:发表于2016-05-27 11:10 被阅读257次


    最近做一个项目总涉及到了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的交互

        本文链接:https://www.haomeiwen.com/subject/mitnkttx.html