您的位置:首页 > 移动开发

iOS开发 UIWebView JS交互

2013-11-21 10:15 281 查看
1.在OC修改/获取网页内容的方法

OC提供了Api,调用网页中的JS方法:stringByEvaluatingJavaScriptFromString;

通过这个方法,可以获取网页的URL,Tilte,插入JS脚本。

测试代码:

[objc] view
plaincopy





-(void)webViewDidFinishLoad:(UIWebView *)webView  

{  

    //获取URL  

    NSString *curURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];  

      

    //获取标题  

    /* 

     关于网页的标题 

     在网页HTML代码中,网页标题位于<head> </head>标签之间。其形式为: 

       <title>网络营销教学网站</title> 

     */  

    NSString *title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];  

      

    //修改属性值  

    NSString *js_result = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('good')[0].color='red';"];  

      

    //调用JS方法  

    [webView stringByEvaluatingJavaScriptFromString:@"funnight()"];  

      

    //结果打印  

    NSLog(@"jsresult=%@",js_result);  

    NSLog(@"title=%@",title);  

    NSLog(@"curURL=%@",curURL);  

}  

2.在JS函数中调用OC中的方法

需要用到WebView的协议函数:

测试代码:

[objc] view
plaincopy





//JS中的button调用OC中的方法  

//WebView每次重定向的时候会调用<UIWebViewDelegate>协议中的方法,  

//无论地址是否合法,协议方法shouldStartLoadWithRequest都会被调用,  

//这样我们就可以在JS中button的触发函数中使网页重定向到我们自定义的地址中,  

//这样OC中的UIWebViewDelegate协议中的shouldStartLoadWithRequest就会被调用,  

-(void)ocFunc  

{  

    NSLog(@"我是OC方法");  

}  

//(重定向之后)  

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

{  

//    //刷新地址栏  

//    if ([request.URL.absoluteString hasPrefix:@"http"]) {  

//        _textFeild.text = request.URL.absoluteString;  

//    }  

    _textFeild.text = request.URL.absoluteString;  

      

    //  ://  

    NSArray *array = [request.URL.absoluteString componentsSeparatedByString:@"://"];  

      

    if ([[array objectAtIndex:0] isEqualToString:@"oc"]) {  

        NSString *ocStr = [array objectAtIndex:1];  

          

        //通过字符串调用函数  

        SEL sel = NSSelectorFromString(ocStr);  

        [self performSelector:sel];  

    }  

    return YES;  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: