JS метод Document.removeEventListener()


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

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

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

Простий випадок:

Для ілюстрації використання методу розглянемо сценарій, де ми маємо кнопку, до якої додано обробник події кліку. Пізніше, з певних причин, нам може знадобитися видалити цей обробник події.

// Додавання обробника події
const button = document.querySelector('button');
function handleClick() {
    console.log('Кнопка натиснута');
}
button.addEventListener('click', handleClick);

// Видалення обробника події
button.removeEventListener('click', handleClick);

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

Складніший випадок з опціями:

Якщо при додаванні обробника події було використано додаткові опції, наприклад capture або once, то при видаленні обробника необхідно вказати ці ж опції, щоб вказати, який саме обробник потрібно видалити.

// Додавання обробника події з опцією
button.addEventListener('click', handleClick, {capture: true});

// Видалення обробника події з тією ж опцією
button.removeEventListener('click', handleClick, {capture: true});

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

автор: Bond

Порада

Використання removeEventListener() є важливим для оптимізації продуктивності веб-додатків. Видалення непотрібних обробників подій допомагає уникнути витоків пам'яті, особливо в односторінкових додатках, де елементи DOM можуть динамічно додаватися та видалятися. Тому регулярно переглядайте свій код на предмет неактивних слухачів подій та видаляйте їх.

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

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

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

Коли ви використовуєте removeEventListener() для видалення обробника події з елемента, переконайтеся, що цей елемент все ще існує в DOM. Якщо елемент було видалено, спроби видалити обробник події з нього будуть марними. Також, якщо ви працюєте з динамічно генерованими елементами, забезпечте наявність механізму для відстеження та видалення обробників подій перед видаленням цих елементів з DOM.

автор: Bond

Синтаксис

removeEventListener(type, listener)
removeEventListener(type, listener, options)
removeEventListener(type, listener, useCapture)

Параметри

type

Рядок, який вказує тип події, для якої потрібно видалити обробник.

автор: Bond

listener

Функція-обробник події, яку потрібно видалити з цілі події.

автор: Bond

options

Об'єкт опцій, що визначає характеристики слухача подій.

автор: Bond

useCapture

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

автор: Bond

Повернення

undefined

Повертає undefined. Метод removeEventListener() не повертає жодного значення, він використовується виключно для видалення обробника події з об'єкта.

автор: Bond

Переглядачі

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

Приклади

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

У цьому прикладі ми демонструємо базове використання методу document.removeEventListener() для видалення обробника подій, який раніше був призначений елементу. Такий підхід є корисним для оптимізації ресурсів браузера та запобігання неочікуваній поведінці у випадку, коли обробник подій більше не потрібен.

HTML

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

JS

// Функція, яка викликається при кліку на елемент
function handleClick() {
    console.log("Елемент був натиснутий");
}

// Додаємо обробник події
document.getElementById("myElement").addEventListener("click", handleClick);

// Видаляємо обробник події
document.getElementById("myElement").removeEventListener("click", handleClick);
автор: Bond

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

HTML

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

JS

function handleFirstClick() {
    console.log("Це повідомлення з'явиться лише один раз");

    // Видаляємо обробник події після його першого виклику
    document.getElementById("uniqueElement").removeEventListener("click", handleFirstClick);
}

// Додаємо обробник події, який буде видалений після першого виклику
document.getElementById("uniqueElement").addEventListener("click", handleFirstClick);
автор: Bond

Коментарі

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

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

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

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

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

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

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

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

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

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

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