JS метод Document.addEventListener()


Загальний опис

Метод addEventListener() дозволяє об'єктам EventTarget призначати обробники подій, що слухають і реагують на певні події, які можуть відбуватися. Об'єкт EventTarget може бути будь-яким об'єктом, здатним приймати події, наприклад, елементи DOM, документ, або ж вікно браузера. Основна корисність методу полягає в тому, що він забезпечує динамічне і гнучке керування подіями в програмі, дозволяючи розробникам легко додавати або видаляти слухачів подій в залежності від потреб додатка.

Використання addEventListener() починається з визначення типу події, на яку потрібно реагувати, та функції обробника, яка буде викликана при її виникненні. Наприклад, для додавання реакції на клік по кнопці, можна використати наступний код:

document.getElementById('myButton').addEventListener('click', function() {
  alert('Кнопка була натиснута');
});

У цьому прикладі, метод addEventListener() призначає анонімну функцію як обробник події click для кнопки з ідентифікатором myButton. При натисканні на кнопку відбудеться виклик функції, що виводить сповіщення.

Метод addEventListener() має три аргументи: тип події (type), обробник події (listener), та необов'язковий об'єкт параметрів (options), що може визначати додаткову поведінку, таку як capture, once, і passive. Наприклад, якщо потрібно, щоб обробник події викликався лише один раз, можна використати параметр once:

window.addEventListener('resize', function() {
  console.log('Вікно було змінено');
}, { once: true });

У цьому випадку, обробник події для зміни розміру вікна буде викликаний лише один раз, незалежно від кількості подій зміни розміру, що відбуваються.

Більш складний сценарій використання addEventListener() може включати роботу з кастомними подіями або управлінням декількома обробниками для однієї події. Наприклад, можливо додати кілька слухачів подій до одного елементу для різних цілей:

const btn = document.getElementById('myButton');
btn.addEventListener('click', firstFunction);
btn.addEventListener('click', secondFunction);

Тут firstFunction та secondFunction будуть викликані обидві, коли користувач натисне на кнопку, дозволяючи реалізувати більш комплексну логіку обробки подій.

Ключ до ефективного використання addEventListener() лежить у розумінні потоку подій в JavaScript і здатності керувати цим потоком за допомогою різних параметрів і методів. Це дозволяє розробникам створювати інтерактивні веб-додатки, що відреаговують на дії користувачів у передбачуваний і контрольований спосіб.

автор: Bond

Порада

Перед додаванням обробника події за допомогою методу addEventListener(), важливо зрозуміти, що кожна подія має своє унікальне ім'я, яке необхідно вказати як перший аргумент. Наприклад, для реагування на кліки миші використовують подію click. Це дозволяє точно специфікувати, на яку подію слухач має реагувати.

автор: Bond
Порада

Коли ви використовуєте addEventListener(), другим аргументом передається функція обробник, яка буде викликана при настанні події. Ця функція може бути анонімною або може бути посиланням на заздалегідь визначену функцію. Використання іменованої функції може полегшити видалення обробника події у майбутньому за допомогою методу removeEventListener().

автор: Bond
Порада

Для забезпечення більш тонкого контролю над обробкою подій, addEventListener() дозволяє вказати третій параметр - об'єкт опцій. Наприклад, встановлення властивості capture у true змінює порядок, у якому подія буде перехоплена, роблячи його зверху вниз, замість стандартного знизу вгору. Це може бути корисним для деяких складних сценаріїв обробки подій.

автор: Bond
Порада

Важливо пам'ятати про видалення обробників подій, коли вони більше не потрібні, щоб уникнути витоку пам'яті. Це особливо актуально для додатків з динамічними елементами користувацького інтерфейсу. Видалення виконується за допомогою методу removeEventListener() і вимагає точної відповідності між аргументами, що були використані при додаванні обробника.

автор: Bond

Синтаксис

addEventListener(type, listener)
addEventListener(type, listener, options)
addEventListener(type, listener, useCapture)

Параметри

type

Рядок, чутливий до регістру, який представляє тип події для прослуховування.

автор: Bond

listener

Об'єкт, який отримує повідомлення (об'єкт, що реалізує інтерфейс Event), коли відбувається подія вказаного типу. Має бути null, об'єктом з методом handleEvent() або функцією JavaScript.

автор: Bond

options

Об'єкт, який визначає характеристики слухача події. Включає параметри для налаштування поведінки слухача.

автор: Bond

useCapture

Булеве значення, що вказує, чи будуть події цього типу розповсюджуватися до зареєстрованого слухача перед тим, як до будь-якого EventTarget під ним у DOM-дереві. Якщо не вказано, за замовчуванням приймає значення false.

автор: Bond

wantsUntrusted

Параметр специфічний для Firefox (Gecko). Якщо true, слухач отримує синтетичні події, що розповсюджуються веб-контентом (за замовчуванням false для браузерного хрому і true для звичайних веб-сторінок). Цей параметр корисний для коду, що знаходиться в додатках, а також самому браузеру.

автор: Bond

Повернення

none

Повертає undefined.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 1 1 7 12 9
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
1 18 4 1
Підтримка: серверні переглядачі
Переглядач Node.js Deno
14.5.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі ми розглянемо просте застосування методу addEventListener() для відстеження подій кліку мишею на HTML елементі. Використання цього методу дозволяє зареєструвати обробник подій, який буде викликаний кожного разу, коли на вказаний елемент буде здійснено клік. Це базовий приклад, який демонструє реєстрацію слухача подій на елементі та виклик функції обробки цих подій.

HTML

<button id="myButton">Натисни</button>

JS

// Знаходимо елемент за його ідентифікатором
const button = document.getElementById('myButton');

// Реєструємо слухача подій для обробки кліку мишею
button.addEventListener('click', function() {
  alert('Кнопка була натиснута!');
});
автор: Bond

У цьому складнішому прикладі ми використаємо addEventListener() для зміни кольору фону елемента при наведенні курсору миші на нього та повернення оригінального кольору, коли курсор покидає межі елемента. Цей приклад демонструє роботу з двома різними типами подій (mouseover та mouseout), а також зміну стилів DOM-елементів відповідно до дій користувача.

HTML

<div id="myDiv">Демонстраційний елемент</div>

JS

// Отримуємо доступ до елемента
const divElement = document.getElementById('myDiv');

// Функція для зміни кольору фону
function changeBackgroundColor(color) {
  divElement.style.backgroundColor = color;
}

// Реєструємо слухача для події наведення курсору миші
divElement.addEventListener('mouseover', function() {
  changeBackgroundColor('lightblue');
});

// Реєструємо слухача для події виходу курсору з елемента
divElement.addEventListener('mouseout', function() {
  changeBackgroundColor('transparent');
});
автор: Bond

У цьому прикладі ми маємо дві кнопки: одна для зміни тексту усередині елемента div з ідентифікатором demo, а інша для зміни кольору фону цього ж елемента. Кожна кнопка використовує метод addEventListener() для прив'язки відповідної функції, що викликається при кліку на кнопку. Це демонструє, як за допомогою JavaScript можна додавати інтерактивність на веб-сторінку, реагуючи на дії користувача.

автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід