ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Запуск функции при загрузке страницы без тега <body>

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для того, чтобы функция начала выполняться непосредственно после полной загрузки HTML-документа, подключите событие DOMContentLoaded. Совместите его с анонимной функцией внутри обработчика, и она будет выполнена, как только загрузится структура DOM:

JS
Скопировать код
document.addEventListener('DOMContentLoaded', function() {
  alert('DOM успешно загружен и готов к действию');
});

Если зависимость вашего кода связана с загрузкой всех ресурсов, например, изображений или стилей, используйте window.onload:

JS
Скопировать код
window.onload = function() {
  alert('Все ресурсы были успешно загружены!');
};

Обязательно определите сами функции перед началом присвоения их обработчикам событий window.onload и `DOMContentLoaded. Чтобы облегчить чтение кода, рекомендуется размещать функции во внешних файлах JavaScript.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Обработка загрузки: Расширенные приёмы

1. Заблаговременная подготовка

Подготовьте необходимые функции при помощи JavaScript-файла:

JS
Скопировать код
function codeAddress() {
  // Ваш код здесь
}

Теперь вы можете привязать их к событию window.onload до того как началась загрузка:

JS
Скопировать код
window.onload = codeAddress;

2. Тайная мощь jQuery

При работе с jQuery применяйте метод $(document).ready(), который не требует наличия тега <body>:

JS
Скопировать код
$(document).ready(function() {
  // Ваш код здесь
});

3. Множество обработчиков события onload

Если вам нужно обработать несколько событий onload, чтобы избегать возникновения конфликтов, используйте addEventListener или attachEvent (для Internet Explorer):

JS
Скопировать код
function otherFunction() {
  // Ваш код здесь
}

window.addEventListener('load', codeAddress); // Первая функция
window.addEventListener('load', otherFunction); // Вторая функция

4. Анонимная функция: не требует наименования

Для того, чтобы код начал выполняться сразу, используйте анонимную функцию:

JS
Скопировать код
(function() {
  // Ваш код здесь
})();

Визуализация

Веб-страница по своей сути – это подобно сцена, готовая к началу спектакля.

Функция выходит на "сцену" и начинает "выступать", когда страница полностью загружается:

JS
Скопировать код
window.onload = function() {
  performAct(); // Спектакль начинается
};

Таким образом, функция начинает действовать, когда страница полностью загружена:

Markdown
Скопировать код
Страница загружена: занавес открыт.
Функция в дело пошла: всемирный театр уже в действии.

Углубляемся в тему: Практические советы

1. Разделяйте код и HTML

Следует избегать применения встроенных обработчиков событий, таких как <body onload="functionName();">, поскольку правильным подходом является разделение HTML и JavaScript.

2. Отложенная загрузка скрипта

Хотите разместить скрипты в <head>, однако они должны быть выполнены после загрузки страницы? Используйте атрибут defer:

HTML
Скопировать код
<script src="yourscript.js" defer></script>

3. Последовательность обработчиков событий

Если установлено несколько обработчиков window.onload, они будут выполняться в той последовательности, в которую были добавлены.

4. Поддержка различных браузеров

Выберите между window.addEventListener и window.attachEvent, исходя из тех браузеров, которые используют ваши пользователи. Учтите, что addEventListener – это современный, и поэтому предпочтительный метод, в то время как attachEvent используется в старых версиях Internet Explorer.

Полезные ресурсы

  1. Window: load event – Web APIs | MDN — Детальное описание механизма событий загрузки окна.
  2. Document: DOMContentLoaded event – Web APIs | MDN — Информация о событии DOMContentLoaded.
  3. $( document ).ready() | jQuery Learning Center — Как используется метод jQuery для выполнения кода после загрузки документа.
  4. Efficiently load JavaScript with defer and async — Обзор применения атрибутов async и defer в скриптах.
  5. The Modern JavaScript Tutorial — Полезный справочник по JavaScript.
  6. javascript – Event binding on dynamically created elements? – Stack Overflow — Обсуждение на Stack Overflow о привязке событий к динамически создаваемым элементам.
  7. Events – You Don't Need jQuery! – Free yourself from the chains of jQuery by embracing and understanding the modern Web API — Как работать с событиями напрямую через Web API, не прибегая к использованию jQuery.