Обнаруживать, когда HTML закончил загрузку и рендеринг на странице
Можно ли обнаружить, когда HTML закончил загрузку и рендеринг на странице? Если да, то как?
Страница состоит из HTML, звонков в ajax, получения данных обратно из ajax-вызовов, большого количества файлов javascript и некоторых изображений. Я хотел бы узнать, когда все закончится. То, что я не могу сделать, это придерживаться вызова функции в конце, потому что я не знаю, когда заканчивается.
Например, на странице есть множество элементов стиля ajax, которые пользователи могут выбирать и выбирать, то есть пользователь 1 может иметь различное количество элементов, кроме пользователя 2 и даже в другом порядке.
Так что я не могу сделать, это использовать последнюю функцию для имитации конца HTML-рендеринга, потому что я не буду знать, какая функция будет последней функцией.
Ответы
Ответ 1
Проблема с ответом на ваш вопрос заключается в последних предложениях, в которых вы говорите, что не знаете, где конец из-за выбора пользователя. Есть два автоматических события, к которым вы можете привязать JavaScript. Что jQuery вызывает $(document).ready()
, что означает, что DOM готов к манипуляции (до загрузки изображений и после загрузки внешних скриптов и CSS), и что обычно называется body onload
(в jQuery это можно записать как $(window).load()
), который запускается после получения всех статических активов. Ваши вызовы Ajax будут запускаться после того, как по крайней мере DOM будет готов, и нет определенного события для того, что произойдет после всех из них. Для этого вам нужно отслеживать их самостоятельно. Вы можете использовать подход "последний конь из сарая". Добавьте небольшой бит логики в конец ваших вызовов Ajax, чтобы узнать, является ли это последним и поднять пользовательское событие под названием "reallyAllDone"
Ответ 2
Да onload
<body onload="load()">
Это обнаружит, когда загружено содержимое тела.
Ответ 3
$(документ).ready
поможет вам узнать, когда дом завершил свое мероприятие и его готовность