Есть код
<body onclick='alert(event.target.tagName)'><button><i>Button</i></button></body>
При клике на кнопке на слово Button в Chrome выдаёт I, а Mozilla - BUTTON. Почему так и как сделать так, чтобы и в Mozilla выдаrвался самый глубокий элемент
На этот вопрос есть ответ на stackoverflow.com
Похоже, Firefox следует рекомендациям W3C:
Content model: Phrasing content, but there must be no interactive content descendant.
То есть <button>
может содержать Phrasing content - текст и/или один или несколько элементов из списка:
a, abbr, area (if it is a descendant of a map element), audio, b, bdi, bdo, br, button, canvas, cite, code, data, datalist, del, dfn, em, embed, i, iframe, img, input, ins, kbd, keygen, label, map, mark, math, meter, noscript, object, output, progress, q, ruby, s, samp, script, select, small, span, strong, sub, sup, svg, template, textarea, time, u, var, video, wbr, text
Но контент внутри <button>
не может быть интерактивным. В рекомендациях W3C описано что есть интерактивность. Интерактивными элементами могут быть:
a, audio (if the controls attribute is present), button, embed, iframe, img (if the usemap attribute is present), input (if the type attribute is not in the hidden state), keygen, label, object (if the usemap attribute is present), select, textarea, video (if the controls attribute is present)
Эти элементы имеют activation behavior
, который определяет механизм активации элемента.
Когда пользователь кликает по элементу, происходит поиск ближайшего интерактивного элемента - начиная с элемента, по которому кликнули, вверх по дереву ищется первый элемент с activation behavior
. Если такой элемент найден, ему отправляется событие click
.
В вашем примере <i>
не является интерактивным. А ближайшим интерактивным является <button>
, поэтому события click
срабатывает на <button>
.
В качестве решения, можно использовать <div>
или <span>
стилизованный под <button>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Скачал плагин с офф сайта, установил, и сразу же в консоли выдает ошибку: Uncaught TypeError: Cannot read property 'onchange' of null at windowonload (js_my_file:119)
Хочу сделать правильную валидацию полей, для ввода линков, профайлов, из соц сетей
Надумал я сделать изображения как у вк, при нажатие на изображения открывается окно, где само фото и автор, лайки и прочие
Есть форма, в ней "инпуты", с ними "текстарея", у этих ребят классstyle-animation