Учтите следующее:
<div onclick="alert('you clicked the header')" class="header">
<span onclick="alert('you clicked inside the header');">something inside the header</span>
</div>
Как я могу сделать так, чтобы, когда пользователь нажимает промежуток, он не запускает div
запускал событие click?
javascript
html
events
dom
Сэм
источник
источник
event
Похоже, что он доступен и для встроенных событий в IOS Safari.Есть два способа получить объект события внутри функции:
Если вам нужно поддерживать устаревшие браузеры, которые не следуют рекомендациям W3C, обычно внутри функции вы используете что-то вроде следующего:
который проверит сначала один, а затем другой и сохранит то, что было найдено внутри переменной события. Однако в встроенном обработчике событий нет
e
объекта для использования. В этом случае вам нужно воспользоватьсяarguments
коллекцией, которая всегда доступна и ссылается на полный набор аргументов, передаваемых функции:Однако, вообще говоря, вы должны избегать встроенных обработчиков событий, если вам нужно что-то сложное, например, остановить распространение. Написание ваших обработчиков событий отдельно и присоединение их к элементам - гораздо лучшая идея в среднесрочной и долгосрочной перспективе, как для удобочитаемости, так и для удобства обслуживания.
источник
onclick="foo(event)"
затем в функциюfunction foo(event){/* do stuff with event */}
. Это работает в моделях событий IE и W3C.Имейте в виду, что window.event не поддерживается в FireFox, и поэтому оно должно быть примерно таким:
Или вы можете использовать стандарт W3C для FireFox:
Если вы хотите стать модным, вы можете сделать это:
источник
<div onclick="myEventHandler(event);">
e.cancelBubble
возвращает ложь в IE! Это не может достичьe.cancelBubble = true;
инструкции. Вместо этого используйте условие SoftwareARM !!Используйте эту функцию, она проверит наличие правильного метода.
источник
У меня была та же самая проблема - окно ошибки js в IE - это прекрасно работает во всех браузерах, насколько я вижу (event.cancelBubble = true делает работу в IE)
источник
Это сработало для меня
источник
Для веб-страниц ASP.NET (не MVC) вы можете использовать
Sys.UI.DomEvent
объект как оболочку нативного события.или передать событие в качестве параметра внутренней функции:
и в некоторых функциях:
источник
Согласно этой странице , в IE вам нужно:
event.cancelBubble = true
источник
Я не могу комментировать из-за кармы, поэтому я пишу это как полный ответ: в соответствии с ответом Гарета (var e = arguments [0] || window.event; [...]) я использовал этот oneliner, встроенный в onclick для быстрый взлом:
Я знаю, что уже поздно, но я хотел, чтобы вы знали, что это работает в одну строку. Фигурные скобки возвращают событие, к которому в обоих случаях присоединена функция stopPropagation, поэтому я попытался заключить их в фигурные скобки, как в случаях if и ...., это работает. :)
источник
Это также работает - в ссылке HTML используйте onclick с return следующим образом:
И тогда функция comfirmClick () должна выглядеть так:
источник
confirm
не актуально. Я имею в виду возвращаемое значение . цитата: В ссылке HTML используйте onclick с return, как этоПочему бы просто не проверить, какой элемент был нажат? Если вы щелкаете по чему-либо,
window.event.target
он присваивается элементу, по которому был выполнен щелчок, и этот элемент также может быть передан в качестве аргумента.Если цель и элемент не равны, это было событие, которое распространялось вверх.
источник
источник
Лучшее решение - обработать событие с помощью функции javascript, но для того, чтобы использовать простое и быстрое решение, использующее непосредственно элемент html, и как только «event» и «window.event» устарели и не будут поддерживаться повсеместно ( https://developer.mozilla.org/en-US/docs/Web/API/Window/event ), я предлагаю следующий «жесткий код»:
источник