Я звоню e.stopPropagation()
почти на каждое событие, которое у меня есть для моего текущего приложения. Есть ли способ просто прекратить распространение для каждого события без явного вызова метода в начале каждого тела функции?Остановка распространения для всех событий
ответ
Нет, это не может быть объявлена на глобальном
Метод event.stopPropagation()
останавливает барботирование событие для родительских элементов, предотвращая любые обработчики событий из родительского выполняется.
Например, если есть ссылка с методом кликов, прикрепленная внутри DIV или FORM, которая также имеет прикрепленный метод кликов, это предотвратит запуск метода щелчка DIV или FORM.
Попробуйте это. Требуется jQuery.
$('*').on('click', function(e){
e.stopPropagation();
});
@ Rakesh..it останавливает события только щелчком мыши о событиях мыши и событиях изменений? –
Вы могли бы бен все события (удалить один ты не нужен):
$('*').bind('blur change click dblclick error focus focusin focusout hover keydown keypress keyup load mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup resize scroll select submit', function(event){
event.stopPropagation();
});
Посмотрите на возможные события в jQuery Docs
Чтобы построить на ответ Алекс, в ванильном JS и еще несколько событий (все события клавиатуры и щелчка, которые я мог найти):
/**
* Disable all user events on the page
*
* @returns {function()} a function to cancel the disabling
*/
const disableAllUserEvents =() => {
const events = ["click", "contextmenu", "dblclick", "mousedown", "mouseenter", "mouseleave", "mousemove",
"mouseover", "mouseout", "mouseup", "keydown", "keypress", "keyup", "blur", "change", "focus", "focusin",
"focusout", "input", "invalid", "reset", "search", "select", "submit", "drag", "dragend", "dragenter",
"dragleave", "dragover", "dragstart", "drop", "copy", "cut", "paste", "mousewheel", "wheel", "touchcancel",
"touchend", "touchmove", "touchstart"];
const handler = event => {
event.stopPropagation();
event.preventDefault();
return false;
};
for (let i = 0, l = events.length; i < l; i++) {
document.addEventListener(events[i], handler, true);
}
return() => {
for (let i = 0, l = events.length; i < l; i++) {
document.removeEventListener(events[i], handler, true);
}
};
};
Редактировать: Просто знайте, что это не безопасное решение, так как эти события могут быть восстановлены и отменены: Use Chrome's webkit inspector to remove an event listener
- 1. Остановка распространения
- 2. JQuery Остановка/начало распространения
- 3. Остановка распространения для конкретного обработчика
- 4. Остановка распространения события в Метеор
- 5. Остановка распространения: пузырь вниз?
- 6. Остановка распространения в флажком
- 7. Остановка распространения не работает
- 8. остановка распространения SMS
- 9. Остановка распространения на живых элементах
- 10. Остановка распространения события в Bonsai.js
- 11. Остановка распространения касания в cocos2d
- 12. Остановка распространения мышей/мышей из обработчика щелчков
- 13. Проблема распространения событий
- 14. Прояснение распространения магистральных событий
- 15. Остановка мониторинга журнала событий
- 16. Остановка распространения события в Corona SDK
- 17. Быстрый вопрос jQuery: Остановка распространения события?
- 18. Проблема понимания распространения событий AS3EnterFrame
- 19. Правила распространения событий touch/click
- 20. Остановка распространения указателя мыши в JQuery
- 21. Остановка: активное состояние от распространения до родителя
- 22. Остановка всех работающих SparkContext?
- 23. ASP.Net OnLoad Остановка обработки событий
- 24. JavaScript, остановка дополнительные слушатели событий
- 25. Несколько событий на одном и том же элементе, остановка немедленного распространения
- 26. Остановка прослушивания событий DOM в магистральной сети
- 27. Остановка событий, чтобы пузыриться в DOM
- 28. Жест распознавани для всех событий
- 29. Остановка всех подключений SSH сразу
- 30. bootstrap checkbox button проблема распространения событий
'stopPropagation()' является функцией для объекта Event. Его нельзя назвать глобально. – BenM
stopPropagation() Предотвращает событие от пузырьков дерева DOM, предотвращая уведомление родительских обработчиков о событии. –
Вот интересное сообщение о том, как динамически получать все поддерживаемые типы событий во время выполнения, поэтому вам не нужно вручную создавать список: http://stackoverflow.com/questions/5848598/jquery-how-can-i -bind-all-events-on-a-dom-element – Jasper