После 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 не определено». (На этой странице также появляется другая ошибка: «необработанное исключение ...» Это другая проблема, о которой я пока не беспокоюсь.)