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!

 

转载于:https://www.cnblogs.com/aeronfay/articles/4957897.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值