Библиотека Tabbable служит для определения элементов на веб-странице, которые могут быть достигнуты с помощью клавиши Tab. С выходом новых версий появляются изменения, влияющие на совместимость с существующим кодом. Эти изменения необходимо учитывать при обновлении проекта, чтобы избежать неожиданного поведения в интерфейсе.
Ранее Tabbable считала некоторые элементы focusable по
умолчанию, даже если они были скрыты через CSS
(display: none или visibility: hidden). В
новых версиях библиотека стала более строгой:
display: none и
visibility: hidden исключаются из списка
tabbable.tabindex="-1" больше не включаются
автоматически, если они не содержат активный обработчик фокуса.Это изменение может привести к тому, что ранее tabbable элементы перестанут участвовать в цикле табуляции, что особенно критично для динамически создаваемых модальных окон и форм.
tabindex и приоритет элементовВ новых версиях изменился порядок приоритета элементов:
tabindex –
порядок соответствует числу в атрибуте, от меньшего к большему.tabindex или с
tabindex="0" – следуют естественному порядку
документа.tabindex="-1" – исключены
из стандартной табуляции.Ранее библиотека могла интерпретировать отрицательные значения
tabindex как допустимые для табуляции, что теперь
исправлено.
Новая версия Tabbable добавила поддержку элементов внутри Shadow DOM, но с изменениями:
includeShadow: true.Библиотека изменила подход к некоторым нестандартным элементам:
<details> и <summary> теперь
учитываются более строго. Ранее <summary> считался
tabbable всегда, сейчас tabbable только если раскрыт
<details> или явно задан tabindex.<svg>, <circle>,
<rect>), теперь включаются только если явно имеют
tabindex или свойства focusable="true".Это влияет на интерфейсы с интерактивной графикой или кастомными контролами.
Функции библиотеки изменились в семантике и наборе аргументов:
tabbable(container) – возвращает
массив элементов, доступных для табуляции.
focusable(container) – возвращает
элементы, которые могут быть сфокусированы программно, включая элементы
с tabindex="-1".
Добавлен параметр includeShadow для
поддержки Shadow DOM.
Методы больше не модифицируют исходный массив элементов, что предотвращает непреднамеренные side-effects при повторных вызовах.
Из-за изменений логики определения tabbable элементов возможны следующие эффекты при обновлении:
tabindex.tabindex.Для минимизации проблем рекомендуется:
focusable() для элементов, которые должны
оставаться доступными через скрипт.tabindex для нестандартных интерактивных
элементов и элементов внутри Shadow DOM.Главные направления изменений:
Эти изменения повышают корректность работы интерфейсов и соответствие стандартам accessibility, но требуют внимательной проверки при обновлении версии библиотеки.