TGViewer
Frontend | Вопросы собесов Frontend | Вопросы собесов @easy_javascript_ru · 17.6K subscribers
Post #2217 2.96K
🤔 Какие модификаторы есть у событий?

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

🚩`stopPropagation`

Этот метод предотвращает всплытие события вверх по дереву DOM.
По умолчанию, события в DOM распространяются по фазам: погружение (capturing) → цель (target) → всплытие (bubbling). Если вы хотите остановить обработку события на текущем элементе и не позволить ему "подняться" выше по дереву DOM, используйте stopPropagation.
<div id="parent" style="padding: 20px; background: lightblue;">
Родительский элемент
<button id="child">Дочерний элемент</button>
</div>

<script>
document.getElementById("parent").addEventListener("click", () => {
alert("Событие всплыло до родителя");
});

document.getElementById("child").addEventListener("click", (event) => {
alert("Событие на кнопке");
event.stopPropagation(); // Остановим всплытие
});
</script>


🚩`stopImmediatePropagation`

Этот метод, помимо остановки всплытия (как stopPropagation), предотвращает выполнение других обработчиков на том же элементе. Если у одного и того же элемента есть несколько обработчиков для одного события, stopImmediatePropagation гарантирует, что после его вызова остальные обработчики не будут выполнены.
<button id="myButton">Нажми меня</button>

<script>
const button = document.getElementById("myButton");

button.addEventListener("click", () => {
alert("Обработчик 1");
});

button.addEventListener("click", (event) => {
alert("Обработчик 2");
event.stopImmediatePropagation(); // Остановим все остальные обработчики
});

button.addEventListener("click", () => {
alert("Обработчик 3"); // Этот обработчик не выполнится
});
</script>


🚩`preventDefault`

Этот метод отменяет поведение элемента по умолчанию.
Некоторые элементы (например, ссылки или формы) имеют стандартное поведение. Например:
- Клик по ссылке ведет на новый URL.
- Отправка формы перезагружает страницу.
С помощью preventDefault можно предотвратить это поведение.
<a href="https://example.com" id="link">Перейти на сайт</a>

<script>
const link = document.getElementById("link");

link.addEventListener("click", (event) => {
event.preventDefault(); // Останавливаем переход по ссылке
alert("Поведение ссылки отменено");
});
</script>


🚩`passive`

Это модификатор, который не является методом, а используется в настройках обработчика событий. Он указывает, что обработчик не вызывает preventDefault. Этот модификатор помогает оптимизировать обработку событий, таких как прокрутка (scroll), делая их более производительными. Некоторые браузеры при обработке событий (например, touchstart или wheel) предполагают, что вы можете использовать preventDefault. Это замедляет прокрутку, так как браузеру нужно ждать завершения вашего обработчика. Указав passive: true, вы говорите браузеру, что не собираетесь отменять поведение.
window.addEventListener("scroll", () => {
console.log("Скролл работает");
}, { passive: true });


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 10
  • 💊 4
  • 🔥 1
More from @easy_javascript_ru
  1. Oct 4, 2026Post #3008
  2. Oct 3, 2026🤔 Что известно про шаблонное проектирование, которое ты использовал в разработке? Шаблонн…
  3. Oct 3, 2026🤔 Какие знаешь подходы по написанию css? Существует несколько методологий и подходов к на…
  4. Oct 2, 2026Post #3005
  5. Oct 2, 2026🤔 Какие статические методы promise знаешь? Promise – это объект, представляющий отложенны…
  6. Oct 1, 2026🤔 Как добавить слушатель события? Это важный аспект работы с веб-приложениями, так как по…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →