Новые единицы просмотра CSS, API федеративного управления учетными данными, переменные шрифты COLRv1 и многое другое.
Если не указано иное, описанные ниже изменения относятся к новейшей версии бета-канала Chrome для Android, ChromeOS, Linux, macOS и Windows. Узнайте больше о функциях, перечисленных здесь, по предоставленным ссылкам или из списка на ChromeStatus.com. Бета-версия Chrome 108 доступна по состоянию на 27 октября 2022 г. Вы можете загрузить последнюю версию на Google.com для настольных компьютеров или в Google Play Store для Android.
CSS
Chrome 108 включает ряд новых функций CSS.
Переполнение CSS для замененных элементов
Chrome начнет внедрять изменение, которое позволит разработчикам использовать существующее свойство overflow
с замененными элементами, которые рисуются за пределами поля содержимого. В сочетании с object-view-box
это можно использовать для создания изображения с настраиваемым свечением или тенью, с правильным поведением при переполнении чернил, как это было бы с тенью CSS.
Это потенциально критическое изменение. Подробную информацию см. в разделе «Изменение, приводящее к переполнению замененных элементов» .
Маленькие, большие, динамические и логические единицы просмотра.
Это добавляет поддержку маленьких ( svw
, svh
, svi
, svb
, svmin
, svmax
), больших ( lvw
, lvh
, lvi
, lvb
, lvmin
, lvmax
), динамических ( dvw
, dvh
, dvi
, dvb
, dvmin
, dvmax
) и логические ( vi
, vb
) единицы.
Поддержка CSS break-after
, break-before
и break-inside
Поддержка значения избегания свойств фрагментации CSS break-before
, break-after
и break-inside
при печати. Это значение сообщает браузеру, что следует избегать нарушения до, после или внутри элемента, к которому оно применяется. Например, следующий CSS позволяет избежать разрыва фигуры при разрыве страницы.
figure {
break-inside: avoid;
}
Эта функция была добавлена в связи с добавлением в Chrome 108 поддержки печати LayoutNG.
Последнее выравнивание базового элемента
Эта функция позволяет разработчикам выравнивать элементы в гибком макете или макете сетки по последней базовой линии, а не по первой. Это делается с помощью следующих свойств:
-
align-items: last baseline;
-
justify-items: last baseline;
-
align-self: last baseline;
-
justify-self: last baseline;
Событие ContentVisibilityAutoStateChanged
Событие, которое срабатывает для элемента с content-visibility: auto
, когда состояние рендеринга элемента изменяется из-за любого из атрибутов, которые делают элемент релевантным для пользователя .
Вариант использования этого заключается в том, чтобы позволить разработчикам иметь больший контроль над тем, когда останавливать или начинать рендеринг в ответ на то, что пользовательский агент останавливает или начинает рендеринг поддерева видимости контента. Например, разработчик может захотеть остановить обновления React в поддереве, которое не отображается пользовательским агентом. Аналогично, разработчик может захотеть остановить любые другие обновления скриптов (например, обновления холста), когда пользовательский агент не отображает элемент.
Веб-API
Федеративное управление учетными данными (было WebID)
API управления федеративными учетными данными позволяет пользователям использовать свои федеративные удостоверения для входа на веб-сайты способом, совместимым с улучшениями конфиденциальности браузера.
Расширения источников мультимедиа в работниках
Включает использование API-интерфейса Media Source Extensions (MSE) из контекстов DedicatedWorker, чтобы повысить производительность буферизации мультимедиа для воспроизведения с помощью HTMLMediaElement в главном контексте окна. Создав объект MediaSource в контексте DedicatedWorker, приложение может затем получить от него MediaSourceHandle и передать этот дескриптор в основной поток для использования при присоединении к HTMLMediaElement. Контекст, создавший объект MediaSource, может затем использовать его для буферизации мультимедиа.
Sec-CH-Prefers-Reduced-Motion
Настройки пользователя Медиа-функции Заголовок подсказок клиента
Медиа-функции пользовательских предпочтений Заголовки клиентских подсказок определяют набор заголовков HTTP-клиентских подсказок вокруг медиа-функций пользовательских предпочтений, как это определено в Медиа-запросах уровня 5. Если эти заголовки используются в качестве критических клиентских подсказок, они позволяют серверам делать разумный выбор, например, в отношении встраивания CSS. . Sec-CH-Prefers-Reduced-Motion
отражает prefers-reduced-motion
.
Читатели WebTransport BYOB
Поддерживает считыватели BYOB (принеси свой собственный буфер) для WebTransport, чтобы обеспечить возможность чтения в буфер, предоставленный разработчиком. Читатели BYOB могут минимизировать копии буфера и уменьшить выделение памяти.
Подстановочные знаки в источнике политики разрешений
Спецификация политики разрешений определяет механизм, который позволяет разработчикам выборочно включать и отключать использование различных функций браузера и API. Одна из возможностей этого механизма позволяет включать функции только для явно перечисленных источников (например, https://foo.com/
). Этот механизм недостаточно гибок для проектирования некоторых сетей CDN, которые доставляют контент через источник, который может размещаться на одном из нескольких сотен возможных поддоменов.
Таким образом, эта функция добавляет поддержку подстановочных знаков в политике разрешений, структурированной как SCHEME://*.HOST:PORT
(например, https://*.foo.com/
), где действительный источник может быть создан из SCHEME://HOST:PORT
(например, https://foo.com/
). Для этого требуется, чтобы HOST был регистрируемым доменом. Это означает, что https://*.bar.foo.com/
работает, а https://*.com/
— нет (если вы хотите разрешить всем доменам использовать эту функцию, вам следует просто делегировать ее *
).
Методы синхронизации для AccessHandles в API доступа к файловой системе
Обновляет асинхронные методыlush flush()
, getSize()
и truncate()
в FileSystemSyncAccessHandle
в API доступа к файловой системе на синхронные методы. FileSystemSyncAccessHandle
в настоящее время содержит смесь синхронных и асинхронных методов, что снижает производительность и удобство использования, особенно для приложений, переносящих C/C++ в Wasm. Это обновление обеспечит единообразие в использовании API и улучшит производительность библиотек на основе Wasm.
Это потенциально критическое изменение, дополнительную информацию можно прочитать в разделе Критическое изменение: методы синхронизации для AccessHandles .
Условный интерфейс WebAuthn
Условный пользовательский интерфейс для WebAuthn поддерживается в Windows 22H2 или более поздней версии, macOS и Android P или более поздней версии. Пользовательский интерфейс WebAuthn на настольных платформах также был обновлен.
Переменные шрифты COLRv1 и обнаружение функций шрифта
Поддержка переменных шрифтов COLRv1
Цветовые векторные шрифты COLRv1 поддерживаются начиная с Chrome 98, но этот первоначальный выпуск поддерживал только статическую функциональность таблицы COLRv1. Спецификация COLRv1 определяет интеграцию с вариациями OpenType, которая позволяет изменять свойства шрифта градиентов и преобразований посредством изменения параметров переменных осей. Этот второй шаг обеспечивает поддержку таких вариантов в COLRv1.
Расширения условий font-tech()
и font-format()
для CSS @supports
Использование font-tech()
и font-format()
вместе с CSS @supports позволяет определять технологию шрифтов и поддержку формата, а также постепенно улучшать контент. В следующем примере проверяется поддержка шрифтов COLRv1 .
@supports font-tech(color-COLRv1) {
}
Поддержка функции tech()
в @font-face src:
дескрипторе
CSS Fonts Level 4 предоставляет дополнительные средства выбора или фильтрации ресурсов шрифтов. Была введена функция tech()
, которая позволяет передавать список технологий шрифтов, которые требуются для работы соответствующего объекта шрифта. На основании этого пользовательский агент выберет первый подходящий ресурс.
Хром на Андроиде
Android OSK теперь по умолчанию изменяет размер визуального окна просмотра.
Экранная клавиатура Android по умолчанию изменяет размер визуального окна просмотра, а не исходного содержащего блока. Авторы могут отказаться от этого, используя новый ключ мета-окна просмотра interactive-widget
.
Испытания происхождения
В этом выпуске Chrome есть две новые пробные версии Origin .
Личность продавца в событии canmakepayment
Событие рабочего сервиса canmakepayment
позволяет продавцу узнать, есть ли у пользователя карта в установленном платежном приложении. Он молча передает происхождение продавца и произвольные данные работнику службы из источника платежного приложения. Такое взаимодействие между источниками происходит при создании PaymentRequest
в JavaScript, не требует жестов пользователя и не отображает какой-либо пользовательский интерфейс. Пробную версию для разработчиков по удалению полей идентификационной информации из события «canmakepay» можно включить через: chrome://flags/#clear-identity-in-can-make-payment
. Включение этого флага приведет к очистке полей идентификатора в событии canmakepay (и намерении Android IS_READY_TO_PAY
).
Дополнительные сведения см. в разделе Обновление поведения событий CanMakePayment API обработчика платежей .
Назад/вперед кеш NotRestoredReason API
API NotRestoredReason сообщит список причин, по которым страница не обслуживается из BFcache, в древовидной структуре фреймов через API PerformanceNavigationTiming.
Страницы могут быть заблокированы в BFcache по разным причинам, например, по причинам, предусмотренным спецификацией, или по причинам, специфичным для реализации браузера. Разработчики могут собирать частоту обращений BFCache на своем сайте, используя постоянный параметр обработчика PageShow и PerformanceNavigationTiming.type(back-forward)
. Этот API позволяет сайтам собирать информацию о том, почему BFCache не используется при навигации по истории, чтобы они могли предпринять действия по каждой причине и сделать свою страницу совместимой с BFCache.
Устаревания и удаления
В этой версии Chrome представлены устаревшие и удаленные версии, перечисленные ниже. Посетите ChromeStatus.com, чтобы просмотреть списки запланированных, текущих и предыдущих удалений.
Устаревания
В этом выпуске Chrome исключена одна функция.
Устареть и удалить window.defaultStatus
и window.defaultstatus
Это нестандартные API, которые реализованы не во всех браузерах и не влияют на поведение браузера. Это очищает их и устраняет потенциальный сигнал снятия отпечатков пальцев.
Первоначально они использовались для изменения/управления текстом «строки состояния» в нижней части окон браузера. Однако они никогда не оказывали никакого реального влияния на строку состояния Chrome и не являются стандартизированными атрибутами. Gecko не поддерживает эти атрибуты с версии 23; WebKit по-прежнему поддерживает эти атрибуты. Соответствующий атрибут window.status
стандартизирован , но также никогда не должен влиять на строку состояния окна .
Переезды
В этом выпуске Chrome удалены четыре функции.
Удалить ImageDecoderInit.premultiplyAlpha
Эта функция не оказывает заметного эффекта в основных случаях использования, но может ограничивать реализацию неоптимальными способами. См. эту проблему для более подробного описания. По согласованию с редакторами спецификаций WebCodecs и отсутствием использования (0,000000339% - 0,00000687% загрузок страниц на счетчик использования в M106).
Удалить navigateEvent.restoreScroll()
restoreScroll()
заменяется на navigateEvent.scroll()
. scroll()
работает идентично, за исключением того, что он позволяет разработчику контролировать время прокрутки для навигации без перемещения ( scroll()
работает, когда прокрутка не является восстановлением, поэтому имя меняется вместе с изменением поведения).
Удалить navigateEvent.transitionWhile()
transitionWhile()
заменяется на navigateEvent.intercept()
из-за недостатков дизайна, о которых сообщили разработчики. intercept() ведет себя почти идентично TransitionWhile(), но вместо обязательного параметра Promise он принимает необязательную функцию-обработчик, которая возвращает Promise. Это позволяет браузеру контролировать время выполнения обработчика, что происходит позже и более интуитивно понятно, чем для transitionWhile()
.
Удалить googIPv6
WebRTC mediaConstraint
"googIPv6: false"
можно использовать для отключения поддержки IPv6 в WebRTC, как в следующем примере.
new RTCPeerConnection({}, {mandatory:{googIPv6:false}});
IPv6 включен по умолчанию уже много лет, и мы не сможем его отключить. Это устаревший API, которого нет в спецификации.