Я использую следующий код для выполнения некоторых операторов после загрузки страницы.
<script type="text/javascript">
window.onload = function () {
newInvite();
document.ag.src="b.jpg";
}
</script>
Но этот код не работает должным образом. Функция вызывается, даже если некоторые изображения или элементы загружаются. Я хочу вызвать функцию, когда страница полностью загружена.
javascript
html
image
Нирадж Кумар
источник
источник
$(window).load()
alert
функцию до перерисовки окна (чтобы оно выглядело так, как будто оно вызывается перед загрузкой)? Код выглядит нормально, и принуждение пользователей к загрузке больших библиотек, вероятно, не решит эту проблему и не упростит диагностику.Ответы:
это может сработать для вас:
или если вам удобно с jquery,
$(document).ready()
запускается в DOMContentLoaded, но это событие не запускается последовательно среди браузеров. Вот почему в jQuery, скорее всего, будут реализованы сложные обходные пути для поддержки всех браузеров. И это очень затруднит «точное» моделирование поведения с использованием простого Javascript (но, конечно, не невозможно).как предложили Джеффри Суини и Дж. Торрес, я думаю, что лучше иметь
setTimeout
функцию, прежде чем запускать функцию, как показано ниже:источник
ready
будет делать то, что запросил OP.ready
срабатывает при загрузке DOM, а не после загрузки элементов.load
сработает после завершения загрузки / рендеринга элементов.load
).setTimeout
плохая идея. Он полагается на загрузку страницы менее 3 секунд (или n секунд в зависимости от того, какое значение вы выберете). Если загрузка занимает больше времени, она не будет работать, а если страница загружается быстрее, ей придется ждать без причины.JavaScript
то же самое для jQuery:
ПРИМЕЧАНИЕ. - Не используйте приведенную ниже разметку (потому что она перезаписывает другие объявления того же типа):
источник
Если вы можете использовать jQuery, посмотрите на load . Затем вы можете настроить свою функцию на запуск после того, как ваш элемент завершит загрузку.
Например, рассмотрим страницу с простым изображением:
Обработчик событий можно привязать к изображению:
Если вам нужно загрузить все элементы в текущем окне, вы можете использовать
источник
load
метод jQuery не привязывает функцию к событию загрузки с помощью Javascript? Чем это будет отличаться от того, что OP уже делает?addEventListener
а не связыватьonload
свойство DOM0 .Я немного запутался в том, что вы подразумеваете под завершенной загрузкой страницы, а также «Загрузка DOM» или «Загрузка содержимого»? В html-странице загрузка может вызвать событие после события двух типов.
Загрузка DOM: что обеспечивает загрузку всего дерева DOM от начала до конца. Но не гарантируйте загрузку справочного контента. Предположим, вы добавили изображения с помощью
img
тегов, поэтому это событие гарантирует, что всеimg
загруженные, но не изображения правильно загружены или нет. Чтобы получить это событие, вы должны написать так:Или используя jQuery:
После загрузки DOM и контента: что также указывает на загрузку DOM и контента. Это гарантирует, что не только
img
тег, но и все изображения или другой относительный контент будут загружены. Чтобы получить это событие, вы должны написать так:Или используя jQuery:
источник
DOMContentLoaded
событий @Hanif , похоже, ничего не делает для меня, ноload
делает.Если вы хотите вызвать js-функцию на своей html-странице, используйте событие onload. Событие onload происходит, когда пользовательский агент завершает загрузку окна или всех фреймов в FRAMESET. Этот атрибут можно использовать с элементами BODY и FRAMESET.
источник
Таким образом, вы можете справиться с обоими случаями - если страница уже загружена или нет:
источник
В качестве альтернативы вы можете попробовать ниже.
Это работает во всех случаях. Это сработает только при загрузке всей страницы.
источник
Насколько я знаю, лучше всего использовать
Ответ №1 использования
DOMContentLoaded
события - это шаг назад, поскольку DOM загрузится до загрузки всех ресурсов.Другие ответы рекомендуют,
setTimeout
что я категорически против, поскольку это полностью субъективно для производительности клиентского устройства и скорости сетевого подключения. Если кто-то находится в медленной сети и / или у него медленный процессор, загрузка страницы может занять от нескольких до десятков секунд, поэтому вы не можете предсказать, сколько времениsetTimeout
потребуется.Что касается
readystatechange
, он срабатывает всякий раз, когдаreadyState
изменения, которые, согласно MDN, все еще будут происходить доload
события.источник
источник
Если вы не используете какие-либо JS-фреймворки, этот проект - лучший способ получить состояние готовности dom с кросс-браузерной совместимостью.
https://github.com/ded/domready/blob/master/ready.js
источник
Если вы уже используете jQuery, вы можете попробовать следующее:
источник
Я могу вам сказать, что лучший ответ, который я нашел, - это поставить сценарий «драйвера» сразу после
</body>
команды. Это самый простой и, наверное, более универсальный вариант, чем некоторые из вышеперечисленных решений.План: На моей странице есть таблица. Я записываю страницу с таблицей в браузер, затем сортирую ее с помощью JS. Пользователь может изменить это, щелкнув заголовки столбцов.
После того, как таблица завершена
</tbody>
командой, и тело завершено, я использую следующую строку для вызова JS сортировки для сортировки таблицы по столбцу 3. Я получил сценарий сортировки из Интернета, поэтому он не воспроизводится здесь. По крайней мере, в следующем году вы можете увидеть это в действии, включая JS, по адресуstatic29.ILikeTheInternet.com
. Щелкните «здесь» внизу страницы. Откроется еще одна страница с таблицей и скриптами. Вы можете увидеть, как он помещает данные, а затем быстро их сортирует. Мне нужно немного ускорить это, но основы уже есть.MakerMikey
источник
Попробуйте этот jQuery :
источник
ready
будет делать то, что запросил OP.ready
срабатывает при загрузке DOM, а не после загрузки элементов.load
сработает после завершения загрузки / рендеринга элементов.вызвать функцию по истечении установленного времени ожидания полной загрузки страницы
источник
Я обычно использую следующий шаблон, чтобы проверить, завершилась ли загрузка документа. Функция возвращает обещание (если вам нужно поддерживать IE, включите полифил ), которое разрешается после завершения загрузки документа. Он используется
setInterval
снизу, потому что аналогичная реализацияsetTimeout
может привести к очень глубокому стеку.Конечно, если вам не нужно поддерживать IE:
С помощью этой функции вы можете делать следующее:
источник
Я использую веб-компоненты, поэтому мне это подходит:
источник
Ставьте свой скрипт после завершения тега body ... работает ...
источник