document.activeElement.matches (: focus) имеет значение false. почему это? - PullRequest
0 голосов
/ 18 марта 2020

У меня есть li:

<li _ngcontent-c21="" class="accordion li" tabindex="0" aria-expanded="true">

К которому я подключен. document.activeElement фактически является этим элементом. Тем не менее,

document.activeElement.matches(':focus')
false

и, что еще более странно:

document.activeElement.focus()
undefined
document.activeElement.matches(':focus')
false

Что здесь происходит? (это chrome, кстати)

1 Ответ

0 голосов
/ 18 марта 2020

Если это происходит в консоли, консоль находится в фокусе, а не элемент или действительно страница; следовательно, элементы не могут соответствовать :focus, пока консоль находится в фокусе. Это не ограничение Element#matches(), но побочный эффект от того, как работает :focus - правила стиля :focus CSS ведут себя одинаково.

Если вы либо установите тайм-аут в консоли и перефокусируйте страницу до истечения времени ожидания или вызовите эти функции в <script> на странице, document.activeElement должно соответствовать :focus, как и ожидалось.

...