iOS的UIWebView获取dom节点
怪我咯
怪我咯 2017-04-17 11:19:18
[iOS讨论组]

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" 还是一样不行

<p id="index-card" class="card"><p 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></p><p id="logo"><img src="http://m.baidu.com/static/index/logo_index2.png" width="168" alt="百度一下,你就知道"></p>
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
天蓬老师

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

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *js = @"document.getElementById('lg').innerHTML";
    NSString *pageSource = [webView stringByEvaluatingJavaScriptFromString:js];
    NSLog(@"pagesource:%@", pageSource);
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号