webView 中调用 JS

UIWebView是iOS最常用的SDK之一,它有一个stringByEvaluatingJavaScriptFromString方法可以将javascript嵌入页面中,通过这个方法我们可以在iOS中与UIWebView中的网页元素交互。

    使用stringByEvaluatingJavaScriptFromString方法,需要等UIWebView中的页面加载完成之后去调用。我们在界面上拖放一个UIWebView控件。在viewDidLoad中将百度主页加载到这个控件中,代码如下:

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // Do any additional setup after loading the view, typically from a nib.
    UIWebView *web = [[UIWebView alloc]init];
    web.delegate = self;
    web.frame = self.view.bounds;
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]];
    [web loadRequest:request];
    [self.view addSubview:web];
}

  

1.通过UIWebView的代理方法webViewDidFinishLoad获取整个页面,代码如下:

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    
    NSString *html = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML;"];
    NSLog(@"%@",html);
    
}

2.获取页面navs导航:

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    
    [webView stringByEvaluatingJavaScriptFromString:@"var removeObj = document.getElementById('navs');"];
    [webView stringByEvaluatingJavaScriptFromString:@"removeObj.parentNode.removeChild(removeObj);"];
    
}

3.删除一些不想要的东西  

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        
        NSMutableString *js = [NSMutableString string];
        //删除常用网址
        [js appendString:@"var removeNav = document.getElementById('nav');"];
        [js appendString:@"removeNav.parentNode.removeChild(removeNav);"];
        
        //删除购物
        [js appendString:@"var removeShop = document.getElementById('shopping');"];
        [js appendString:@"removeShop.parentNode.removeChild(removeShop);"];
        
        //删除实时热点
        [js appendString:@"var removeHot = document.getElementById('hotword');"];
        [js appendString:@"removeHot.parentNode.removeChild(removeHot);"];
        
        //删除底部bottom
        [js appendString:@"var removeBottom = document.getElementById('bottom');"];
        [js appendString:@"removeBottom.parentNode.removeChild(removeBottom);"];
        
        //执行JS代码
        [webView stringByEvaluatingJavaScriptFromString:js];
    
    });    
}

  

最后的效果:

  

 

 

总结:这次主要是讲解了stringByEvaluatingJavaScriptFromString的用法,它的功能非常的强大,用起来非常简单,通过它我们可以很方便的操作UIWebview中的页面元素。只需要稍微知道些Html!

 

posted @ 2015-11-12 07:52  Aeronfay  阅读(345)  评论(1)    收藏  举报