Я только что столкнулся с интересной ситуацией, когда у меня есть отправка <button>
внутри shadowDOM собственного пользовательского элемента, который находится внутри <form>
.
<form id="one" action="" method="get">
<s-button>Select</s-button>
#shadow-root
<button>...</button>
<button>Outside</button>
</form>
У меня также есть <button>
как прямой ребенок <form>
.
Ребенок <button>
вызывает отправку формы.
Но <button>
в корне тени нет.
В некотором смысле, это имеет смысл. Но кто-нибудь придумал, как сказать корню теней <button>
, чтобы он правильно работал с <form>
, или мне придется справиться с этим через JS?
UPDATE
Спасибо @ Supersharp
Да, я знаю, что события нажатия блокируются на слое shadowDOM, но я удивлен, что нет способа разрешить кнопке оставаться частью формы, что можно настроить с помощью атрибута или свойства .
Конечно, я могу зафиксировать событие click и затем отправить новое с this
, но это не делает то же самое, поскольку мое событие больше не будет генерироваться пользователем, и с этим связан огромный набор правил.
Мне грустно, что дизайнеры не задумывались над этим при разработке веб-компонентов. Это просто кажется недостатком в дизайне.
@ Дэнни,
Я думаю, вы имели в виду, что кнопки отправляют click
событий, а не submit
событий. Это форма, которая отправляет событие submit
. Но ваш пример может быть ближе к тому, что я делаю после того, как closest
дает мне только form
, от которого я являюсь ребенком.