stringByEvaluatingJavaScriptFromString:不会返回任何字符串

时间:2012-05-15 11:30:49

标签: iphone

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

2 个答案:

答案 0 :(得分:0)

我的猜测是你在网页加载完成之前就已经执行了这段代码。

尝试使用UIWebViewDelegatewebViewDidFinishLoad:方法中调用您的代码。

- (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