Мне нужно выполнить код JavaScript, когда страница полностью загружена. Это включает в себя такие вещи, как изображения.
Я знаю, что вы можете проверить, готов ли DOM, но я не знаю, совпадает ли это с тем, когда страница полностью загружена.
javascript
Бен Шелок
источник
источник
Ответы:
Это называется
load
. Это произошло до того, как появился DOM ready, и DOM ready был фактически создан именно по той причине, котораяload
ждала изображения.источник
window.onload
вызывается каждый компонент страницы / ресурс (т.е. * включая * изображения). Я прав?onload
ждет всех ресурсов, которые являются частью документа. Это, конечно, исключает динамически создаваемые запросы, которые не являются частью самого документа, например, запрос AJAX.addEventListener("load", function(){
...})
вместо перезаписиonload
свойства.Обычно вы можете использовать
window.onload
, но вы можете заметить, что последние браузеры не запускаютсяwindow.onload
при использовании кнопок истории назад / вперед.Некоторые люди предлагают странные искажения, чтобы обойти эту проблему, но на самом деле, если вы просто создадите
window.onunload
обработчик (даже тот, который ничего не делает), это поведение кэширования будет отключено во всех браузерах. MDC документы этой «особенность» очень хорошо, но по какой - то причине все еще есть люди , использующиеsetInterval
и другое странное хаки.В некоторых версиях Opera есть ошибка, которую можно обойти, добавив следующее где-то на вашей странице:
Если вы просто пытаетесь получить функцию javascript, вызываемую один раз для каждого просмотра (и не обязательно после завершения загрузки DOM), вы можете сделать что-то вроде этого:
Например, я использую этот трюк для предварительной загрузки очень большого файла в кэш на экране загрузки:
источник
Для полноты картины вы также можете привязать его к DOMContentLoaded, который сейчас широко поддерживается.
Дополнительная информация: https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded
источник
$.ready
я думал, что это внесло хороший вклад. Btw. Я бы также использовалaddEventListener
-method дляload
события, так как он позволяет вам иметь несколько обратных вызовов:window.addEventListener("load", function(event){ // your code here });
Попробуйте это только запустить после загрузки всей страницы
По Javascript
По Jquery
источник
$(window)
заставляет меня думать, что это будет JQuery - верно? Или я путаю синтаксис JavaScript? (Я новичок в JS).$(document).ready();
когда jQuery доступен?Попробуйте этот код
посетите https://developer.mozilla.org/en-US/docs/DOM/document.readyState для получения дополнительной информации
источник
"interactive"
не полностью загружен."complete"
полностью загруженсобытие window.onload срабатывает при загрузке всего, включая изображения и т. д.
Вы хотели бы проверить состояние готовности DOM, если хотите, чтобы ваш js-код выполнялся как можно раньше, но вам все равно нужен доступ к элементам DOM.
источник
Javascript, использующий
onLoad()
событие, будет ожидать загрузки страницы перед выполнением.Если вы используете функцию готовности документа в инфраструктуре jQuery, код будет загружен сразу после загрузки DOM и до загрузки содержимого страницы:
источник
Возможно, вы захотите использовать window.onload , так как в документах указано, что он не запускается до тех пор, пока DOM не будет готов и ВСЕ другие ресурсы на странице (изображения и т. Д.) Не загружены.
источник
И вот способ сделать это с PrototypeJS :
источник
В современных браузерах с современным javascript (> = 2015) вы можете добавить
type="module"
в свой скрипт скрипт, и все внутри этого скрипта будет выполняться после загрузки всей страницы. например:также старые браузеры будут понимать
nomodule
атрибут. Что-то вроде этого:Для получения дополнительной информации вы можете посетить javascript.info .
источник
Если вам нужно использовать много
onload
использовать$(window).load
вместо (jQuery):источник
Таким образом, в основном javascript уже имеет метод onload для окна, которое выполняется, какая страница полностью загружена, включая изображения ...
Вы можете сделать что-то:
источник
Обновление 2019 года: это был ответ, который работал для меня. Поскольку мне нужно было несколько запросов ajax, чтобы сначала запустить и вернуть данные, чтобы посчитать элементы списка.
источник