0

我准备编写一段代码来提取网页的某些部分,所以我决定使用 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 不会在控制台上返回任何字符串。有没有人给我一些帮助?

4

2 回答 2

0

我的猜测是您在网页完成加载之前执行此代码。

尝试webViewDidFinishLoad:使用UIWebViewDelegate在方法中调用您的代码。

- (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;
于 2012-05-15T12:51:50.503 回答
0

getElementsById 返回一个对象而不是字符串。你应该这样使用:

document.body.getElementById('hi').outerHTML
于 2013-10-30T10:04:25.540 回答