我要编写一个代码来提取网页的某些部分,所以我决定使用stringByEvaluatingJavaScriptFromString:来解析HTML。 下面是我的测试代码
[webView loadHTMLString:@"<html><body><div id='hi'><font size=20>hello world</font></div></body></html>" baseURL:nil];
NSString *hiValue = [webView stringByEvaluatingJavaScriptFromString:@"document.body.getElementById('hi')"];
NSLog(@"value: %@",hiValue);
NSLog不会在控制台上返回任何字符串。有人给我一些帮助吗?
答案 0 :(得分:0)
我的猜测是你在网页加载完成之前就已经执行了这段代码。
尝试使用UIWebViewDelegate在webViewDidFinishLoad:
方法中调用您的代码。
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[webView loadHTMLString:@"<html><body><div id='hi'><font size=20>hello world</font></div></body></html>" baseURL:nil];
NSString *hiValue = [webView stringByEvaluatingJavaScriptFromString:@"document.body.getElementById('hi')"];
NSLog(@"value: %@",hiValue);
}
不要忘记在viewDidLoad:
中设置代理:
webView.delegate = self;
答案 1 :(得分:0)
getElementsById返回一个对象而不是String。你应该这样使用:
document.body.getElementById('hi').outerHTML