Ответ
stopPropagation() останавливает дальнейшее всплытие (bubbling) события вверх по DOM-дереву, но другие обработчики на этом же элементе все равно сработают.
stopImmediatePropagation() делает то же самое, но дополнительно предотвращает выполнение любых других обработчиков на текущем элементе.
Пример:
button.addEventListener('click', (e) => {
e.stopPropagation(); // Остановит всплытие, но второй обработчик сработает
console.log('First handler');
});
button.addEventListener('click', (e) => {
console.log('Second handler'); // Выполнится
});
// С stopImmediatePropagation
button.addEventListener('click', (e) => {
e.stopImmediatePropagation(); // Остановит всплытие и другие обработчики
console.log('First handler (immediate)');
});
button.addEventListener('click', () => {
console.log('Second handler (never runs)'); // Не выполнится
});