Есть ли способ использовать JavaScript, чтобы проверить, ожидают ли какие-либо вызовы AJAX в настоящее время ответа? - PullRequest
0 голосов
/ 21 ноября 2010

Я делаю некоторые вещи, связанные с YouTube, в UIWebView на iOS. Я использую мобильную версию YouTube, и они загружают вещи абсолютно странным образом (они делают несколько вызовов AJAX, чтобы фактически загрузить страницу, при этом сначала загружая только шаблон).

Что-то еще странное: я регистрирую все тело страницы следующим образом:

NSLog([webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.innerHTML"]);

Что странно, так это то, что регистрация не происходит, пока весь AJAX не закончится и страница не будет загружена. Но я всегда думал, что JavaScript не ждет завершения AJAX, прежде чем приступить к выполнению следующей строки кода - это противоречит этому; на самом деле он ожидает завершения AJAX, а затем возвращает истинный, полный HTML-код страницы.

Любая помощь? Я в замешательстве.

Ответы [ 2 ]

0 голосов
/ 22 ноября 2010

Если мы предположим, что ваш AJAX асинхронный, порядок загрузки страницы может повлиять на то, что вы видите.

  1. Сначала выполняются теги сценария.Тело недоступно.
  2. Сценарии, расположенные между ними, выполняются так, как они встречаются во время загрузки страницы, тело доступно до точки, в которой находится сценарий.
  3. Когда все ресурсы загружены, выполняется событие window.onload.

Таким образом, в зависимости от того, где ваши AJAX-вызовы и где вы звоните, это может повлиять на порядок, в котором вы видите вещи.

Затем, в зависимости от более тонких деталей реализации NSLog (), вы можетене видеть вывод из оператора регистрации в тот самый момент, когда вы его вызываете.Часто бывают буферы, которые сбрасываются время от времени - возможно, только когда поток пользовательского интерфейса не занят чем-либо другим.

0 голосов
/ 21 ноября 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...