Хром 133 бета

Опубликовано: 15 января 2024 г.

Если не указано иное, следующие изменения относятся к новейшей бета-версии Chrome для Android, ChromeOS, Linux, macOS и Windows. Подробнее о перечисленных здесь функциях можно узнать по предоставленным ссылкам или из списка на ChromeStatus.com. Chrome 133 находится в бета-версии по состоянию на 15 января 2024 года. Вы можете загрузить последнюю версию на Google.com для настольных компьютеров или в Google Play Store для Android.

CSS и UI

В этом релизе добавлены семь новых функций CSS и пользовательского интерфейса.

Расширенная функция attr()

Реализует расширение функции attr() , указанное в CSS Level 5, которое позволяет использовать типы, отличные от <string> , во всех свойствах CSS (в дополнение к существующей поддержке псевдоэлемента content ).

Подробнее об этом можно узнать в статье «Функция CSS attr() получила обновление» .

CSS :open псевдокласс

Псевдокласс :open соответствует элементам <dialog> и <details> , когда они находятся в открытом состоянии, и соответствует элементам <select> и <input> когда они находятся в режимах, содержащих средство выбора, и это средство отображается.

Запросы контейнера состояния прокрутки CSS

Используйте запросы контейнеров для стилизации потомков контейнеров в зависимости от состояния их прокрутки.

Контейнер запроса представляет собой либо контейнер прокрутки, либо элемент, на который влияет положение прокрутки контейнера прокрутки. Запросы могут касаться следующих состояний:

  • stuck : К одному из краев области прокрутки прикреплен липкий контейнер.
  • snapped : Контейнер, выровненный по оси прокрутки, в данный момент зафиксирован по горизонтали или вертикали.
  • scrollable : Позволяет ли контейнер прокрутки прокручиваться в заданном направлении.

Введен новый container-type: scroll-state позволяет запрашивать информацию о контейнерах.

#sticky {
  position: sticky;
  container-type: scroll-state;
}

@container scroll-state(stuck: top) {
  #sticky-child {
    font-size: 75%;
  }
}

Подробнее см. в CSS scroll-state() .

CSS- text-box , text-box-trim и text-box-edge

Для достижения оптимального баланса текстового содержимого свойства text-box-trim и text-box-edge , а также сокращенное свойство text-box позволяют более точно контролировать вертикальное выравнивание текста.

Свойство text-box-trim определяет, какие стороны следует обрезать — сверху или снизу, а свойство text-box-edge определяет, как именно следует обрезать край.

Эти свойства позволяют точно контролировать вертикальное расстояние, используя метрики шрифта. Подробнее см. в CSS text-box-trim .

Значение hint атрибута popover

API всплывающих окон определяет поведение для двух значений атрибута popover : auto и manual . Эта функция описывает третье значение, popover=hint . Подсказки, которые чаще всего ассоциируются с поведением типа «всплывающая подсказка», имеют несколько иное поведение. В первую очередь, разница заключается в том, что hint подчиняется значению auto при открытии вложенных стеков всплывающих окон. Таким образом, можно открыть несвязанное всплывающее окно hint , в то время как существующий стек всплывающих окон с атрибутом auto остается открытым.

В качестве классического примера можно привести ситуацию, когда открыт элемент выбора <select> ( popover=auto ) и отображается всплывающая подсказка, срабатывающая при наведении курсора ( popover=hint ). Это действие не закрывает элемент выбора <select> .

Улучшения в позиционировании всплывающих окон и ссылок.

Добавляет императивный способ установки связей между всплывающими окнами с помощью popover.showPopover({source}) . Позволяет создавать неявные ссылки на элементы привязки в рамках связей между всплывающими окнами.

Всплывающее окно, вложенное в invoker, не должно вызываться повторно.

В следующем случае нажатие кнопки корректно активирует всплывающее окно, однако нажатие на само всплывающее окно после этого не должно его закрывать.

<button popovertarget=foo>Activate
  <div popover id=foo>Clicking me shouldn't close me</div>
</button>

Ранее это происходило потому, что щелчок по всплывающему окну переносился на <button> и активировал вызываемый объект, который закрывал всплывающее окно. Теперь это исправлено и стало ожидаемым поведением.

Веб-API

Animation.overallProgress

Предоставляет разработчикам удобное и согласованное представление о том, насколько продвинулась анимация на протяжении итераций, независимо от характера ее временной шкалы. Без свойства overallProgress вам придется вручную вычислять, насколько продвинулась анимация, учитывая количество итераций анимации и то, является ли currentTime анимации процентом от общего времени (как в случае анимации, управляемой прокруткой) или абсолютным значением времени (как в случае анимации, управляемой временем).

Метод pause() объекта Atomics

Добавляет метод pause() к объекту пространства имен Atomics , чтобы сообщить процессору, что текущий код выполняет спин-блокировку.

Отчетность CSP по хешированию для скриптов

Сложные веб-приложения часто должны отслеживать загружаемые ими подресурсы в целях безопасности.

В частности, новые отраслевые стандарты и передовые методы (например, PCI-DSS v4) требуют, чтобы веб-приложения вели учет всех загружаемых и выполняемых ими скриптов.

Эта функция основана на CSP и API отчетов и позволяет получать URL-адреса и хеши (для CORS/одного источника) всех скриптовых ресурсов, загружаемых документом.

перемещение DOM с сохранением состояния

Добавляет примитив DOM ( Node.prototype.moveBefore ), позволяющий перемещать элементы по дереву DOM без сброса состояния элемента.

При перемещении, а не удалении и вставке, сохраняется следующее состояние:

  • Элементы <iframe> остаются загруженными.
  • Активный элемент остается в центре внимания.
  • Всплывающие окна, полноэкранный режим и модальные диалоги остаются открытыми.
  • CSS-переходы и анимации продолжаются.

Отобразить атрибут attributionsrc для <area>

Обеспечивает согласование отображения атрибута attributionsrc для <area> с существующим поведением обработки этого атрибута, даже если он не был отображен.

Кроме того, логично поддерживать атрибут для <area> , поскольку этот элемент является первоклассной поверхностью навигации, и Chrome уже поддерживает его для других поверхностей, таких как <a> и window.open

Отображение уточненного междоменного renderTime в синхронизации элементов и LCP (независимо от параметра Timing-Allow-Origin ).

Элементы синхронизации и записи LCP имеют атрибут renderTime , выровненный по первому кадру, в котором было отрисовано изображение или текст.

В настоящее время для изображений из разных источников этот атрибут защищен за счет требования наличия заголовка Timing-Allow-Origin в ресурсе изображения. Однако это ограничение легко обойти (например, отображая изображение из одного источника и изображение из другого источника в одном кадре).

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

Отменить responseStart и добавить firstResponseHeadersStart

При включенной функции «103 ранних подсказки » ответы содержат две временные метки:

  • Когда появляются первые намеки (103)
  • Когда прибудут последние заголовки (например, 200)

Когда в Chrome 115 появилась firstInterimResponseStart , позволяющая измерять эти две временные метки, мы также изменили значение responseStart (используемого функцией Time to First Byte (TTFB) ) на «последние заголовки». Это создало проблему совместимости с браузерами и инструментами, которые не внесли аналогичное изменение в эту часто используемую метрику.

В Chrome 133 это изменение responseStart отменено для решения проблемы совместимости, и вместо него введен firstResponseHeadersStart , позволяющий сайтам измерять время до получения последних заголовков, сохраняя при этом исходное определение TTFB.

Интерфейс FileSystemObserver

Интерфейс FileSystemObserver уведомляет веб-сайты об изменениях в файловой системе. Сайты отслеживают изменения файлов и каталогов, к которым пользователь ранее предоставил доступ, на локальном устройстве пользователя или в файловой системе Bucket File System (также известной как Origin Private File System), и получают уведомления об основной информации об изменениях, такой как тип изменения.

Замораживание в режиме энергосбережения

При включенном режиме энергосбережения Chrome замораживает скрытую и неактивную группу контекста просмотра, которая оставалась скрытой более пяти минут, если какая-либо подгруппа кадров одного источника в ней превышает пороговое значение использования ЦП, за исключением следующих случаев:

  • Обеспечивает функциональность аудио- или видеоконференцсвязи (обнаруживается путем идентификации микрофона, камеры или захвата экрана/окна/вкладки, либо RTCPeerConnection с открытым RTCDataChannel или потоком MediaStreamTrack в режиме реального времени).
  • Управляет внешним устройством (обнаруженным с помощью WebUSB, Web Bluetooth, WebHID или Web Serial).
  • Блокирует соединение Web Lock или IndexedDB, которое препятствует обновлению версии или транзакции в другом соединении.

Замораживание заключается в приостановке выполнения. Оно формально определено в API жизненного цикла страницы.

Пороговое значение загрузки ЦП будет откалибровано таким образом, чтобы при активном режиме энергосбережения зависало примерно 10% фоновых вкладок.

Множественные карты импорта

В настоящее время карты импорта должны загружаться до любого модуля Elasticsearch, и в одном документе может быть только одна карта импорта. Это делает их ненадежными и потенциально медленными в реальных условиях: любой модуль, загруженный до них, ломает все приложение, а в приложениях с большим количеством модулей они становятся большим блокирующим ресурсом, поскольку сначала должна загрузиться вся карта для всех возможных модулей.

Эта функция позволяет создавать несколько карт импорта для одного документа, объединяя их согласованным и детерминированным способом.

Заголовки доступа к хранилищу

Предлагает альтернативный способ для аутентифицированных встраиваемых элементов использовать неразделенные файлы cookie. Эти заголовки указывают, включены ли (или могут ли быть включены) неразделенные файлы cookie в данный сетевой запрос, и позволяют серверам активировать уже предоставленные им разрешения на доступ к хранилищу. Предоставление альтернативного способа активации разрешения на доступ к хранилищу позволяет использовать его ресурсам, не являющимся iframe, и может уменьшить задержку для аутентифицированных встраиваемых элементов.

Поддержка создания ClipboardItem с помощью Promise<DOMString>

ClipboardItem , являющийся входными данными для асинхронного метода записи в буфер обмена (async clipboard write() , теперь принимает в своем конструкторе не только объекты типа Blob, но и строковые значения. ClipboardItemData может быть объектом типа Blob, строкой или промисом, который разрешается либо в объект типа Blob, либо в строку.

WebAssembly Memory64

Предложение memory64 добавляет поддержку линейной памяти WebAssembly размером более 2^32 бит. Оно не содержит новых инструкций, а вместо этого расширяет существующие инструкции, позволяя использовать 64-битные индексы для памяти и таблиц.

API веб-аутентификации: метод getClientCapabilities() объекта PublicKeyCredential

Метод `publicKeyCredential getClientCapabilities() позволяет определить, какие функции WebAuthn поддерживаются клиентским приложением пользователя. Метод возвращает список поддерживаемых возможностей, что позволяет разработчикам настраивать процессы аутентификации и рабочие процессы в зависимости от конкретных функций клиента.

WebGPU: 1-компонентные форматы вершин (и unorm8x4-bgra)

Добавляет дополнительные форматы вершин, отсутствовавшие в первоначальной версии WebGPU из-за отсутствия поддержки или старых версий macOS (которые больше не поддерживаются ни одним браузером). Однокомпонентные форматы вершин позволяют приложениям запрашивать только необходимые данные, тогда как ранее им приходилось запрашивать как минимум в два раза больше данных для 8- и 16-битных типов. Формат unorm8x4-bgra немного упрощает загрузку цветов вершин, закодированных в формате BGRA, при сохранении того же шейдера.

Алгоритм X25519 API веб-криптографии

Алгоритм "X25519" предоставляет инструменты для выполнения согласования ключей с использованием функции X25519, указанной в [RFC7748]. Идентификатор алгоритма "X25519" может использоваться в интерфейсе SubtleCrypto для доступа к реализованным операциям: generateKey, importKey, exportKey, deriveKey и deriveBits.

Новые испытания происхождения

В Chrome 133 вы можете принять участие в следующих новых пробных версиях Origin .

Отключите функцию заморозки в режиме энергосбережения.

Этот пробный период позволяет сайтам отказаться от блокировки режима энергосбережения, который поставляется с Chrome 133.

Амортизация и удаление

В этой версии Chrome представлены перечисленные ниже устаревшие и удаленные функции. Для получения списков запланированных, текущих и ранее удаленных функций посетите сайт ChromeStatus.com.

В этой версии Chrome одна функция устарела.

Устаревать ограничение на количество компонентов WebGPU maxInterStageShaderComponents .

maxInterStageShaderComponents limit устарело из-за совокупности факторов. Планируемая дата удаления — Chrome 135.

  • Избыточность с maxInterStageShaderVariables : это ограничение уже выполняет аналогичную функцию, контролируя объем данных, передаваемых между этапами шейдера.
  • Незначительные расхождения: Хотя существуют небольшие различия в способе расчета двух ограничений, эти различия незначительны и могут быть эффективно устранены в рамках ограничения maxInterStageShaderVariables .
  • Упрощение: Удаление maxInterStageShaderComponents упрощает интерфейс шейдера и снижает сложность для разработчиков. Вместо управления двумя отдельными ограничениями с незначительными различиями, они могут сосредоточиться на более подходящем и всеобъемлющем параметре maxInterStageShaderVariables .

В этой версии Chrome удалены две функции.

Ранее, когда ресурс предварительно загружался с помощью <link rel=prefetch> , Chrome игнорировал его семантику кэширования (а именно max-age и no-cache ) при первом использовании в течение пяти минут, чтобы избежать повторной загрузки. Теперь Chrome устраняет этот особый случай и использует обычную семантику HTTP-кэширования.

Это означает, что веб-разработчикам необходимо включать соответствующие заголовки кэширования (Cache-Control или Expires), чтобы получить выгоду от использования <link rel=prefetch> .

Это также влияет на нестандартный <link rel=prerender> .

Удалите автоматическое отображение приветственной страницы Chrome при первом запуске вкладок с начальными настройками.

Добавление chrome://welcome в свойство first_run_tabs файла initial_preferences теперь не будет иметь никакого эффекта. Это удалено, поскольку эта страница дублирует интерфейс первого запуска, который активируется на настольных платформах.