Обработка тени Root в Safari - PullRequest
0 голосов
/ 05 марта 2020

Когда я помещаю фокусируемый элемент в теневой DOM, OSX Safari не включает его в последовательность вкладок (в отличие от всех других браузеров). Кнопка видима, активна, но недоступна для пользователей клавиатуры. Это известная ошибка? Есть ли способ справиться с этим, кроме как сделать вкладку компонента компонентной и переадресовывать фокус (что кажется довольно грубым)?

Вот как выглядит минимальный пример в консоли Safari

<div class="host">
  Shadow Content (Open)
    <button>Click me</button>
</div>

, которую я создал В этом примере вызывается .attachShadow({"mode": "open"}) на div.host, а затем устанавливается .shadowRoot.innerHTML на "<button>Click me</button>"

. У меня возникла эта проблема в компонентах, которые я создал. Я протестировал приведенный выше пример в Chrome, и кнопка включена в последовательность вкладок, как и ожидалось.

1 Ответ

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

Safari по умолчанию не включает навигацию по вкладкам, его необходимо включить с помощью настроек.

В вкладке выделяется следующее текстовое поле или всплывающее меню. На вкладке также подсвечиваются кнопки и другие элементы управления, если на панели «Ярлыки» панели «Системные настройки» выбран параметр «Все элементы управления».

В Option-Tab выделяются те же элементы, что и на вкладке, а также все другие интерактивные элементы.

Чтобы поменять местами поведение Tab и Option-Tab, включите «Нажмите Tab, чтобы выделить каждый элемент на веб-странице» на расширенной панели настроек Safari.

https://support.apple.com/guide/safari/keyboard-and-other-shortcuts-cpsh003/mac

...