Как быть уверенным, что рендеринг завершен после AJAX-запроса - PullRequest
0 голосов
/ 27 июля 2010

После AJAX-запроса на загрузку фрагмента html xmlhttp.readyState переходит в 4 после завершения загрузки. Похоже, readyState == 4 ничего не говорит (и не должен ничего говорить, imo) о прогрессе браузера в рендеринге загруженного материала.

Так что, если мой JS зависит только от readyState == 4, прежде чем начать использовать загруженный html, у меня есть хороший шанс получить «what_var is undefined», когда JS начнет выполняться. Я этого не хочу.

Как я могу точно узнать, когда браузер полностью завершил рендеринг?

Я не использую jquery или любой другой фреймворк.

Тестовый пример, который показывает проблему: http://www.sellmycalls.com/cgi-bin/chain, а затем, когда появляется короткая страница, нажмите одну из зеленых кнопок в поле меню слева (с пометкой «все параметры» и «список наблюдения»). Повторите пару раз, и проблема появляется. Если кажется, что страница зависла, закройте вкладку и откройте ее на новой вкладке.

Используйте Firebug / FF, чтобы увидеть ошибку на странице; Я не претендую на запуск в любом другом браузере.

При первой загрузке этой страницы вы можете увидеть вводный материал. Удалите поле ввода с помощью неокрашенной кнопки «Скрыть введение» / «Скрыть помощь» в этом меню слева. Сообщение об ошибке на консоли будет выглядеть примерно так: «cx_usrname не определено». (На этой странице также появляется другая ошибка: «необработанное исключение ...» Это другая проблема, о которой я пока не беспокоюсь.)

1 Ответ

1 голос
/ 27 июля 2010

Установите функцию, которая запускается после всех ваших интенсивных вещей, которые запускают ваше взаимодействие с сайтом.IE, скрывайте кнопку «Пуск» при первом запуске приложения, затем включите его с помощью вызова функции после запуска всего вашего другого кода.

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