#button #mozilla #click
Есть код
Button
При клике на кнопке на слово Button в Chrome выдаёт I, а Mozilla - BUTTON. Почему
так и как сделать так, чтобы и в Mozilla выдаrвался самый глубокий элемент
Ответы
Ответ 1 Похоже, Firefox следует рекомендациям W3C:
Content model:
Phrasing content, but there must be no interactive content descendant.
То есть может содержать Phrasing content - текст и/или один или несколько
элементов из списка:
a, abbr, area (если он потомок элемента map), 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
Но контент внутри не может быть интерактивным. В рекомендациях W3C описано
что есть интерактивность. Интерактивными элементами могут быть:
a, audio (если присутствует атрибут controls), button, embed, iframe, img (если
присутствует атрибут usemap), input (если атрибут type не равен hidden), keygen, label,
object (если присутствует атрибут usemap), select, textarea, video (если присутствует
атрибут controls)
Эти элементы имеют activation behavior, которое определяет механизм активации элемента.
Когда пользователь щёлкает по элементу, происходит поиск ближайшего интерактивного
элемента, начиная с элемента, по которому щёлкнули, вверх по дереву ищется первый элемент
с activation behavior. Если такой элемент найден, ему отправляется событие click.
В вашем примере не является интерактивным. А ближайшим интерактивным является
, поэтому события click срабатывают на .
В качестве решения можно использовать или , стилизованный под
Комментариев нет:
Отправить комментарий