Как работает readyState? - PullRequest
       32

Как работает readyState?

3 голосов
/ 24 февраля 2012

Я проверяю свойство .readyState из BrowserTestObject с помощью RFT (Rational Functional Tester).

Иногда перед следующим шагом в моем тестовом скрипте мне нужно убедиться, что страница «готова» и все объекты загружены.

Означает ли .readyState == 4, что всеобъекты в браузере загружены и готовы ?Может ли любой ajax-вызов в фоновом режиме все еще "работать" или он должен завершиться, прежде чем браузер вернет .readyState=4?А как насчет гибкого приложения?

Является ли это поведение браузера независимым или нет?Я после IE 8 (и Firefox 3.6.x)

Ответы [ 2 ]

3 голосов
/ 29 февраля 2012

быстрый ответ - ДА, если реализация браузера верна.

Смотрите здесь: http://www.whatwg.org/specs/web-apps/current-work/multipage/dom.html#current-document-readiness

1 голос
/ 07 марта 2012

Я бы сказал нет. Если я понял обсуждение здесь , то готовое состояние, использованное таким образом, относится только к тестовому javascript, больше ничего. Чтобы дождаться загрузки самого документа, вам нужно подключиться к document.readyState и дождаться, пока он станет "complete". В этом случае, как только разбор HTML будет завершен, document.readyState будет "complete" раз и навсегда, и на него не будет влиять какой-либо запрос XMLHttpRequest. Flash плагины могли или не могли запуститься; наверняка будет много запущенного javascript; Например, конструкция $(function() {}) в jquery часто означает, что код JavaScript может начать выполняться только после того, как браузер перейдет в состояние «завершено».

Чтобы проверить, происходят ли какие-либо асинхронные запросы, я предлагаю как-то перехватить событие readyState всех запросов XMLHttpRequest и заставить его обновить глобальную переменную.

...