доступ к элементам, созданным JavaScript во время выполнения (document.write) - PullRequest
0 голосов
/ 28 октября 2011

Я делаю приложение для iphone, которое получает данные из Интернета, я использую HPPLE для анализа html, все работает нормально, но в тех же случаях у меня возникают проблемы с доступом к элементам, динамически создаваемым JavaScript (document.write) на веб-странице html. это мой HTML источник источник страницы

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

я могу видеть все элементы, помеченные

с помощью инструментов разработчика браузера Safari, но когда я пытаюсь загрузить HTML-код, полученный источник не содержит желаемых HTML-тегов. извините за мой плохой английский. и я надеюсь, что кто-нибудь поможет мне.

Ответы [ 3 ]

2 голосов
/ 28 октября 2011

Самым простым решением для получения поддержки 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 голос
/ 28 октября 2011

Я никогда не использовал hpple сам, но, глядя на описание, ничего не говорится о разборе и выполнении javascript.

То, что вы видите в Safari Browser Tools, является визуальным представлением DOM.Это то, что браузер генерирует из HTML.Javascript можно использовать для его изменения после загрузки исходного HTML.

hpple предназначен для синтаксического анализа исходного HTML, но не содержит никаких элементов DOM, которые были бы созданы с использованием javascript.Так что ты застрял там.Надеюсь, кто-то здесь знает об инструменте, который может анализировать JavaScript, чтобы вы могли делать то, что вы хотите.

1 голос
/ 28 октября 2011

Вы можете получить такой HTML с помощью инструментов разработчика браузера. Щелкните правой кнопкой мыши на теге <html> и выберите «Редактировать как HTML». Скопируйте этот код и вставьте его в некоторый HTML-файл.

Вы также можете скопировать частичный код. В этом случае вам нужно щелкнуть правой кнопкой мыши по определенному тегу, содержащему нужный код (тег переноса).

...