首页 > iOS的UIWebView获取dom节点

iOS的UIWebView获取dom节点

webView载入http://baidu.com 我要把那个百度Logo的<p>拿出来,在Chrome的console里直接运行

document.getElementById('lg')

没问题,可以拿出来

但是我在代码里,运行这段代码,空的,什么都没有。

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *js = @"document.getElementById('lg')";
    NSString *pageSource = [webView stringByEvaluatingJavaScriptFromString:js];
    NSLog(@"pagesource:%@", pageSource);
}

NSLog打印出来什么都没有。如果我用 @"document.body.innerHTML" 是可以把整个body弄出来的

补充:移动版的id不一样

手机webview拿出的是移动版,logo的id是 "logo" 不是 "lg" 但是即使换成 "logo" 还是一样不行

<div id="index-card" class="card"><div id="userinfo-wrap"><a id="login" href="http://wappass.baidu.com/passport/?login&amp;tpl=wimn&amp;ssid=0&amp;from=844b&amp;bd_page_type=1&amp;pu=sz@1320_2001&amp;uid=63F6D4DE11637DEB1C14B1B9B64017BE&amp;tn=&amp;regtype=1&amp;u=http://m.baidu.com">登录</a></div><div id="logo"><img src="http://m.baidu.com/static/index/logo_index2.png" width="168" alt="百度一下,你就知道"></div>

你通过 getElementById 拿到的只是这个节点的对象,要通过 innerHTML 得到代码

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *js = @"document.getElementById('lg').innerHTML";
    NSString *pageSource = [webView stringByEvaluatingJavaScriptFromString:js];
    NSLog(@"pagesource:%@", pageSource);
}
【热门文章】
【热门文章】