API Popover теперь является базовой версией. Недавно доступно.

Опубликовано: 7 февраля 2025 г.

В апреле 2024 года на этом сайте было опубликовано сообщение о том, что API Popover доступен в базовой версии. Однако мы ошиблись, и поповер входит в базовый уровень по состоянию на 27 января 2025 года. В этом посте объясняется, почему мы ошиблись и что с тех пор изменилось, чтобы уменьшить вероятность возникновения этих ошибок.

Что такое Popover API?

API Popover предоставляет встроенный способ создания различных типов всплывающих окон, используемых в веб-приложениях. Раньше для этого требовалось использовать JavaScript и уделять большое внимание их реализации в доступной форме. API переносит все это в браузер, а простой всплывающий элемент можно создать декларативно в HTML.

<button popovertarget="my-popover">Open Popover</button>

<div id="my-popover" popover>
  <p>I am a popover with more information. Hit <kbd>esc</kbd> or click away to close me.</p>
</div>
Базовый пример использования атрибута popover.

Почему в апреле 2024 года не было базового уровня?

Когда Firefox выпустил свою реализацию popover в апреле 2024 года, мы еще не обнаружили серьезной проблемы в iOS и iPadOS . В этих мобильных браузерах щелчок за пределами всплывающего окна не закрывал его — эта функция известна как легкое закрытие . Это проблема, которая помешает большинству разработчиков использовать popover. Это означало, что его не следовало включать в качестве базовой версии еще в апреле, и нужно было подождать, пока ошибка не будет исправлена ​​в Safari 18.3.

Почему мы ошиблись?

Baseline полагается на работу веб-функций для расчета того, когда функции находятся в базовом состоянии или выходят за его пределы. Если вы посмотрите на отдельный файл функций в этом проекте, например файл popover , вы увидите в списке отдельные функции из списка совместимости браузера Mozilla. Одна веб-функция обычно содержит несколько таких включений. Это связано с тем, что функция в Интернете — это не просто одно свойство или метод, для работы ей требуется ряд составных частей. Функция также не является полной спецификацией. Например, спецификации CSS часто включают в себя подфункции, которые никогда не были реализованы или используются только в определенном контексте. Работа над веб-функциями использует сочетание существующих данных о доступности и человеческого вклада для определения того, что представляет собой функция веб-платформы, и, что особенно важно, является ли частичная реализация достаточно серьезной, чтобы исключить ее из базового уровня.

Еще в феврале работа над веб-функциями была далека от завершения. Поэтому, чтобы показать, как будет работать Baseline, мы пытались выяснить ключевые функции, которые станут частью Baseline 2024, не имея всех необходимых для этого данных. На бумаге, а точнее в данных совместимости браузера, которые не обновлялись до сентября , когда проблема была обнаружена, поповер, похоже, был включен. Однако из-за того, что ошибка в iOS была достаточно серьезной, чтобы предотвратить использование всплывающего окна, оно не было готово.

Также отсутствовала тестовая инфраструктура для мобильных устройств. Проект «Тесты веб-платформы» дает нам возможность проверить, работают ли функции веб-платформы во всех браузерах. Если бы эта проблема с отключением света возникла в браузере для настольных компьютеров, мы бы увидели, что тесты не удались, но в случае с мобильными устройствами этого не произошло.

Как нам избежать этого в будущем?

Мы уже находимся в гораздо лучшем положении с данными. Данные о веб-функциях почти полны, поэтому мы можем с большей степенью уверенности относиться к любой из функций, которые мы объявляем базовыми.

В частности, в этой проблеме частью проблемы было выявление проблемы, возникающей только на мобильных устройствах, в iOS. Произошло несколько вещей, которые должны облегчить выявление проблем совместимости на мобильных устройствах в будущем. Продолжается работа над улучшением мобильного тестирования в тестах веб-платформы, поэтому мы сможем лучше определять проблемы в мобильном браузере отдельно от настольного компьютера. В этом году мы также планируем опубликовать эти данные на информационной панели webstatus.dev . Если подобная проблема произойдет в будущем, мы должны получить более быстрые сведения о том, что это произошло, прежде чем мы включим эту функцию в базовый вариант.

Мы всегда знали, что представить всю веб-платформу как набор функций будет непросто! Однако дискуссии, которые мы ведем о частичных реализациях, ошибках и том, что на самом деле составляет функцию, невероятно ценны. Это помогает нам определить, что действительно важно для вас, и дает нам более точные сигналы для использования при планировании таких мероприятий, как Interop 2025.