JavaScript在运行时创建的访问元素(document.write)

时间:2011-10-28 16:35:40

标签: javascript iphone html html-parsing

我正在制作一个从网络上获取数据的iphone应用程序,我使用HPPLE解析html,一切正常但在同样的情况下我有问题访问html网页中的JavaScript(document.write)动态创建的元素。这是我的html网络来源page source

<table dir = "rtl .......">
<tbody>
<script src = "get.aspx?type=js&file=ajax&rev=3"......>
<script language = "JavaScript" src = "get.aspx?type=js&file=mc&rev=6"></script>
<script>..</script>
<tr>..</tr>
<tr>..</tr>
<tr>..</tr>
<tr>..</tr>
<tr>..</tr>
<tr>..</tr>
<tr>..</tr>
<script>..</script>
<tr>..</tr>
<tr>..</tr>
<tr>..</tr>

我可以看到标有&lt;的所有元素TR&GT;使用safari浏览器的开发者工具,但是当我尝试下载html代码时,我得到的源代码中不包含我想要的html标签。我的英语很糟糕。我希望有人帮助我。

3 个答案:

答案 0 :(得分:2)

获得JavaScript支持的最简单的解决方案是使用UIWebView。它不需要添加到视图层次结构中。

UIWebView *webView = [[UIWebView alloc] init];
NSString *url = @"http://www.google.com";
webView.delegate = self;
frames = 0; // NSUInteger instance variable to track frame loads
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];    

UIWebViewDelegate方法

- (void)webViewDidStartLoad:(UIWebView *)webView {
    frames++;
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    frames--;
    if (frames > 0) return;

    NSString *document = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];

    // Use HPPLE to parse
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
    // Handle error
}

现在您已拥有document文字,您可以将其传递给HPPLE

答案 1 :(得分:1)

您可以使用浏览器的开发人员工具获取此类HTML。右键单击<html>标签,然后选择“编辑为Html”。复制此代码并将其粘贴到某个html文件中。

您还可以复制部分代码。在这种情况下,您需要右键单击包含所需代码的特定标记(包装标记)。

答案 2 :(得分:1)

我自己从未使用过hpple,但是看一下描述,它没有说明解析和执行javascript。

您在Safari浏览器工具中看到的是DOM的直观表示。这是浏览器从HTML生成的内容。加载初始HTML后,可以使用Javascript对其进行修改。

hpple旨在解析原始HTML,但不包含任何使用javascript创建的DOM元素。所以你卡在那里。希望有人在这里知道一个可以解析javascript的工具,这样你就可以做你想做的事。