JS метод Event.stopImmediatePropagation()


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

stopImmediatePropagation — метод об'єкта Event, що використовується для припинення подальшої обробки події, включаючи інші обробники для тієї ж події на поточному елементі та на інших елементах DOM. Відмінність від stopPropagation у тому, що stopImmediatePropagation зупиняє не тільки розповсюдження події вгору по дереву DOM, а й виконання всіх інших обробників цієї події, призначених на поточному елементі. Цей метод особливо корисний, коли необхідно зупинити обробку події в конкретних випадках, унеможливлюючи виконання подальших обробників на поточному елементі.

Наприклад, у випадку, коли кілька обробників призначені на один і той же елемент, використання stopImmediatePropagation дозволяє зупинити виконання решти обробників після виклику першого:

document.getElementById('myButton').addEventListener('click', function(event) {
  console.log('Обробник 1');
  event.stopImmediatePropagation();
});

document.getElementById('myButton').addEventListener('click', function() {
  console.log('Обробник 2');
});

У цьому прикладі буде виведено тільки Обробник 1, оскільки stopImmediatePropagation припиняє виконання інших обробників події на цьому ж елементі. Це може бути корисно для попередження виконання певних дій за умов, коли подію вже оброблено іншою логікою.

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

автор: Bond

Порада

Цей метод не зупиняє виконання обробників для інших типів подій на тому ж елементі; тому застосовуйте його вибірково для конкретних подій, що потребують зупинки.

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

Пам'ятайте, що метод stopImmediatePropagation робить ваш код менш передбачуваним для інших розробників, тому важливо коментувати його використання або забезпечити, що інші обробники не залежать від порядку виконання.

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

Якщо застосовувати stopImmediatePropagation разом з умовами, можна забезпечити точкову зупинку подальшого виконання події лише за певних умов.

автор: Bond

Синтаксис

event.stopImmediatePropagation();

Повернення

undefined

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

автор: Bond

Переглядачі

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

Приклади

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

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

HTML

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

JS

const button = document.getElementById('actionButton');

// Перший обробник: лише для активної кнопки
button.addEventListener('click', function(event) {
  if (button.classList.contains('active')) {
    console.log('Ця кнопка вже активна.');
    event.stopImmediatePropagation();
  }
});

// Другий обробник: оновлює статус кнопки
button.addEventListener('click', function() {
  console.log('Активуємо кнопку.');
  button.classList.add('active');
});
автор: Bond

Цей приклад ілюструє, як stopImmediatePropagation дозволяє припинити виклики обробників для кнопки з конкретним класом. У результаті, якщо у кнопки є клас disable-click, буде виконано лише перший обробник, і ніяких інших дій не відбудеться, що корисно для керування умовними подіями.

HTML

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

JS

const specialButton = document.getElementById('specialButton');

// Спеціальний обробник для кнопки із заданим класом
specialButton.addEventListener('click', function(event) {
  if (specialButton.classList.contains('disable-click')) {
    console.log('Обробка завершена, інші обробники не виконуються.');
    event.stopImmediatePropagation();
  }
});

// Загальний обробник для всіх натискань
specialButton.addEventListener('click', function() {
  console.log('Це основний обробник, який виконується для всіх.');
});
автор: Bond

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

автор: 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`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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