Хром 117 бета

Подсетка CSS-сетки, поддержка анимации входа и выхода для CSS, группировка массивов, помощники итераторов и многое другое.

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

CSS

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

Правило @starting-style

Это правило позволяет авторам начинать переходы CSS при первом обновлении стиля.

Переходы CSS не вызывают переходы из исходных стилей при первом обновлении стиля элемента или при изменении типа отображения с none на какой-либо другой тип. Это сделано для того, чтобы избежать неожиданных переходов от исходных стилей. Чтобы начать переход с первого обновления стиля, теперь вы можете применить стили из правила @starting-style . Например, следующий код CSS запускает переход цвета фона от зеленого к салатовому при первом обновлении стиля для элемента div:

div { 
  transition: background-color 0.5s; 
  background-color: lime; 
} 

@starting-style {
  div { 
    background-color: green; 
  } 
}

Свойство наложения

Свойство overlay позволяет разработчикам сохранять элементы на верхнем слое для выходного перехода. Свойство overlay добавляется, чтобы указать, находится ли элемент в верхнем слое или нет, и может принимать два значения: none или auto .

Свойство поведения перехода CSS

CSS-свойство transition-behavior — это версия свойства transition , которая позволяет использовать дискретные свойства в переходах. Указав значениеallow allow-discrete для перехода-поведения, дискретные свойства теперь будут запускать анимацию и переключаться от своего начального значения к конечному значению на уровне 50%. Для переходов, где display: none и content-visibility: hidden являются одним из начальных или конечных значений, видимое значение будет использоваться на протяжении всего перехода.

Значение подсетки CSS-сетки

Значение subgrid для grid-template-columns и grid-template-rows теперь реализовано в Chrome. Это значение позволяет вложенной сетке использовать дорожки, определенные в ее родительском элементе, вместо создания нового определения дорожки для строк, столбцов или того и другого.

CSS-перенос текста: красиво

pretty значение свойства CSS text-wrap оптимизируется для наилучшего макета, а не для скорости. Он предназначен для основного текста и поэтому предполагает наличие нескольких строк. Используя pretty разработчик явно выбирает метод компоновки, который может быть медленнее, чем wrap , что оптимизирует производительность. Текущая реализация в Chrome оптимизирована для сирот , чтобы предотвратить отображение одного слова в нижней части абзаца текста.

В Chrome 117 попробуйте эту демонстрационную версию text-wrap: beautiful и посмотрите, как значение меняет представление текста.

Contain-Intrinsic-size: автоматическая поддержка нет

Эта функция расширяет существующий синтаксис contain-intrinsic-size включив в него auto && none .

Веб-API

Группировка массивов

Группировка массивов — чрезвычайно распространенная операция, лучше всего иллюстрируемая предложением SQL GROUP BY и программированием MapReduce (которое лучше рассматривать как Map-Group-Reduce). Возможность объединять данные в группы позволяет разработчикам вычислять наборы данных более высокого порядка, например средний возраст когорты или ежедневные значения LCP для веб-страницы. Эта функция позволяет это сделать, добавив статические методы Object.groupBy и Map.groupBy . Метод Object возвращает простой объект, где группы являются ключами свойств. Метод Map возвращает карту, где ключи могут иметь произвольные значения.

Очистить подсказки клиента через заголовок Clear-Site-Data

Веб-сайты теперь смогут очищать кэш подсказок клиента с помощью Clear-Site-Data: "clientHints" . Подсказки клиента теперь также будут очищаться, если один и тот же заголовок нацелен на «cookies», «cache» или «*». Это связано с тем, что если пользователь очищает файлы cookie в подсказках клиента пользовательского интерфейса, они также уже очищаются, кэш подсказок клиента является кешем и соответствует целям с подстановочными знаками соответственно.

Синтаксис подстановочных знаков заголовка Clear-Site-Data

Веб-сайты теперь смогут очищать все цели хранения («файлы cookie», «кэш» и «хранилище»), отправляя Clear-Site-Data: "*" . Обратите внимание, что Chrome на данный момент не поддерживает очистку «executionContexts», но если мы добавим его в будущем, любой заголовок с таргетингом «*» также очистит их.

customElements.getName

Метод customElements.getName() возвращает имя тега данного определения пользовательского элемента.

Помощники итератора

Помощники итератора — это новые методы в прототипе итератора, позволяющие широко использовать и использовать итераторы.

Сделать CaptureController производным от интерфейса EventTarget.

Интерфейс CaptureController обеспечивает дальнейшее манипулирование сеансом захвата экрана. Ожидается, что в будущем события, связанные с сеансом захвата, будут отправляться на этот контроллер. Чтобы иметь возможность управлять прослушивателями таких событий, в CaptureController доступны методы EventTarget .

ПроизводительностьРесурсСроки доставкиТип

Свойство deliveryType PerformanceResourceTiming возвращает информацию о том, как был доставлен ресурс. Например, ресурсы, которые были доставлены из кеша (в настоящее время доступны через transferSize ), и навигация, которая была предварительно загружена на предыдущей странице.

Проверка переполнения порта в настройках URL-адресов

Значение порта будет проверено при настройке url.port . Все значения, превышающие 16-битный числовой предел, больше не будут действительными. Например, следующий скрипт ведет себя по-другому после изменения:

u = new URL("http://test.com"); 
u.port = 65536; 
console.log(u.port); 

До изменения выход будет 65536. После изменения выход будет 80.

API частного государственного токена

Это новый API для распространения ограниченных частных сигналов между сайтами без использования постоянных межсайтовых идентификаторов, таких как сторонние файлы cookie. Методы борьбы с мошенничеством, основанные на сторонних файлах cookie, перестанут работать, как только сторонние файлы cookie станут устаревшими. API частного государственного токена не генерирует и не определяет сигналы борьбы с мошенничеством: это зависит от соответствующей первой стороны и эмитентов токенов. Скорее, API обеспечивает конфиденциальность, устанавливая ограничения на информацию, передаваемую в этих сигналах. API основан на варианте протокола Privacy Pass , который находится в процессе стандартизации IETF. Его можно рассматривать как доступную через Интернет форму протоколов Privacy Pass. Спецификация API будет обновляться для новых версий и типов токенов и будет обновляться в соответствии со спецификациями рабочей группы Privacy Pass. Ожидаемые изменения коснутся базовых криптографических протоколов и кода выпуска токенов: мы не ожидаем изменений в API -интерфейсах Fetch API для разработчиков, связанных с выпуском и погашением. API частного государственного токена ранее назывался API токенов доверия. Он переименован, чтобы более точно отразить основную семантику и подчеркнуть преимущества конфиденциальности для пользователей.

Встроенный анализатор хоста IPv6, совместимый со стандартом IPv4

Поведение анализа IPv4 встроенного анализатора хоста IPv6 будет обновлено, чтобы строго соответствовать стандарту веб-URL . Введенные ограничения на IPv6-адрес:

  • Встроенный IPv4-адрес всегда должен состоять из 4 частей.
  • Адреса, состоящие менее чем из 4 частей, например http://[::1.2] больше не будут действительны. Эта функция является частью URL-взаимодействия 2023.

URL-адрес: разрешить «%00» в качестве допустимого пути URL-адреса.

В настоящее время Chrome считает URL-адрес недействительным, если часть пути URL-адреса содержит «%00» (или ноль), что не соответствует стандарту URL-адресов . Например, следующий тест не пройден в Chrome, поскольку new URL(...) выдает исключение «Неверный URL».

assertEquals(new URL("http://example.com/%00").pathname, "/%00"); 

Согласно стандарту URL-адреса, любая последовательность символов или байтов в пути URL-адреса не должна делать URL-адрес недействительным, и это изменение обновляет Chrome, чтобы он соответствовал этому стандарту.

Управление расширением заголовка WebRTC RTP

Расширьте API WebRTC RTCRtpTransceiver , чтобы обеспечить контроль над тем, какие расширения заголовка RTP согласовываются.

Покадровый квантователь в VideoEncoder

Добавляет «квантизатор» VideoEncoderBitrateMode для VideoEncoder. Это дает возможность указать параметр квантования для каждого кадра для видеокодеков AV1, VP9 и AVC.

Параметр WebUSB exclusionFilters в requestDevice()

Параметр exclusionFilters в navigator.usb.requestDevice() позволяет веб-разработчикам исключать некоторые устройства из средства выбора браузера. Его можно использовать для исключения устройств, соответствующих более широкому фильтру, но не поддерживаемых.

Испытания происхождения продолжаются

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

Транспортировка словаря сжатия с помощью Shared Brotli

Эта функция добавляет поддержку использования назначенных предыдущих ответов в качестве внешнего словаря для HTTP-ответов, сжимаемых Brotli.

Зарегистрируйтесь для участия в пробной версии источника CompressionDictionaryTransport .

Пробная версия устаревания WebSQL

WebSQL удаляется из Chrome. Сайтам, использующим его, рекомендуется перейти на SQLite через Wasm .

Эта пробная версия устаревшей версии дает разработчикам, которым требуется больше времени для миграции, возможность продолжать использовать WebSQL до Chrome 123 (март 2024 г.). Зарегистрируйтесь для участия в пробной версии устаревшей версии WebSQL .

Веб-приложения с вкладками

Разрешите окнам веб-приложений иметь полосу вкладок , например, для редактирования нескольких документов в одном приложении. Это добавляет новый режим отображения «с вкладками» и новое поле манифеста, позволяющее настраивать полосу вкладок.

Зарегистрируйтесь для участия в пробной версии Origin Web Apps с вкладками .

Устаревания и удаления

В этой версии Chrome представлены устаревшие и удаленные версии, перечисленные ниже. Посетите ChromeStatus.com, чтобы просмотреть списки запланированных, текущих и предыдущих удалений.

В этом выпуске Chrome исключены две функции.

Устаревшее событие выгрузки

Chrome 117 начнет процесс прекращения поддержки обработчика событий unload . Если ваш сайт использует их, вам настоятельно рекомендуется прочитать специальный пост об отказе от unload для получения более подробной информации.

Устаревшие подписи сервера TLS SHA-1

Chrome прекращает поддержку алгоритмов подписи, использующих SHA-1 для подписей сервера во время рукопожатия TLS. Это не влияет на поддержку SHA-1 в сертификатах сервера, которая уже была удалена, или в сертификатах клиентов, поддержка которых продолжается.

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

[WebRTC] Отмена устаревшей функции getStats() на основе обратного вызова

RTCPeerConnection имеет две версии getStats() : одна совместимая со спецификацией, возвращающая отчет посредством разрешения обещания, а другая нестандартная, возвращающая совершенно другой отчет через обратный вызов в качестве первого аргумента. Основанный на обратном вызове метод теперь удален.

Дополнительную информацию о миграции и о том, что делать, если вам нужно больше времени, см. в руководстве по миграции Legacy getStats() .

Удаление значения -1 для WebRTC getStats datachannelIdentifier.

API WebRTC getStats предоставляет свойство dataChannelIdentifier . Он больше не будет предоставлять значение «-1» в случаях, когда статистика запрашивается до установления соединения с каналом данных. Вместо этого член словаря будет опущен.

Удаление WebRTC getStats encoderImplementation и decoderImplementation «неизвестно».

API WebRTC getStats предоставляет имена реализации кодировщика и декодера для исходящего и входящего видео . Он больше не будет предоставлять значение «неизвестно» в случаях, когда статистика запрашивается до того, как видеокадр был закодирован или декодирован. Вместо этого член словаря будет опущен.

Свойство CSS -webkit-highlight

Удалите свойство CSS -webkit-highlight предназначенное для выделения текста, но никогда не стандартизированное. Он не имеет видимого эффекта в Chrome (он анализируется, но никогда не используется при рендеринге контента). Свойство было удалено из WebKit в 2014 году , было отмечено как устаревшее на MDN и недавно было заменено спецификацией CSS Highlight Pseudo .