OC和JS的交互那点事

1、OC调用JS代码

在代理方法webViewDidFinishLoad:方法中调用JS代码

NSMutableString *js = [NSMutableString string];
[js appendString:@"var footer = document.getElementsByTagName('footer')[0];"];
[js appendString:@"footer.parentNode.removeChild(footer);"];
[webView stringByEvaluatingJavaScriptFromString:js];

2、JS调用OC代码

在代理方法
-(BOOL)webView: shouldStartLoadWithRequest: navigationType: 中 可拦截从html页面的请求

  • 首先在html中自定义方法,例如:
    function call(){
    window.location.href = 'YH://call'
    }
  • 在上述webView代理方法中将此链接拦截
    NSString *url = request.URL.absoluteString;
    NSRange range = [url rangeOfString:@"YH://"];
    NSUInteger loc = range.location;
    if (loc != NSNotFound){
    NSString *method = [url subStringFromIndex:loc + range.length];//取得方法名
    SEL sel = NSSelectFromString(method);//转成SEL
    [self performSelector:sel withObject:nil];
    }

这时候就会调用系统的call这个方法

- (void)call {
//将要实现的OC方法写在这里
}

3、WebViewJavascriptBridge

关于OC和JS的交互有个第三方库,貌似很好用给出个链接有兴趣的可以点击去这里看看

你可能感兴趣的:(OC和JS的交互那点事)