Опубликовано: 1 мая 2025 г.
Если не указано иное, следующие изменения относятся к новейшей бета-версии Chrome для Android, ChromeOS, Linux, macOS и Windows. Подробнее о перечисленных здесь функциях можно узнать по предоставленным ссылкам или из списка на ChromeStatus.com. Chrome 130 находится в бета-версии по состоянию на 30 апреля 2025 года. Вы можете загрузить последнюю версию на Google.com для настольных компьютеров или в Google Play Store для Android.
CSS и UI
В этом релизе добавлены семь новых функций CSS и пользовательского интерфейса.
Функция if()
Функция CSS if() предоставляет лаконичный способ выражения условных значений. Она принимает ряд пар «условие-значение», разделённых точками с запятой. Функция последовательно оценивает каждое условие и возвращает значение, соответствующее первому истинному условию. Если ни одно из условий не является истинным, функция возвращает пустой поток токенов. Это позволяет выражать сложную условную логику простым и лаконичным способом. Пример:
div {
color: var(--color);
background-color: if(style(--color: white): black; else: white);
}
.dark {
--color: black;
}
.light {
--color: white;
}
<div class="dark">dark</div>
<div class="light">light</div>
Свойства reading-flow и reading-order
Свойство CSS reading-flow управляет порядком отображения элементов в гибкой, сеточной или блочной компоновке для инструментов доступности и фокусировки с помощью клавиатуры Tab. Оно принимает одно из следующих значений ключевых слов:
-
normal -
flex-visual -
flex-flow -
grid-rows -
grid-columns -
grid-order -
source-order
Свойство CSS ` reading-order позволяет вручную изменить порядок чтения в контейнере потока чтения. Это целое число со значением по умолчанию 0.
Чтобы узнать больше, прочитайте статью «Использование CSS reading-flow для логической последовательной навигации по фокусу» и попробуйте несколько примеров reading-flow .
offset-path: shape()
Функция shape() уже поддерживается в clip-path и позволяет создавать адаптивные фрагменты текста. Включение её также для offset-path закрывает небольшой пробел, где для этого свойства можно использовать один и тот же тип формы.
Поддержка атрибута transform для SVGSVGElement
Эта функция позволяет применять свойства преобразования — такие как масштабирование, вращение, перемещение и искажение — непосредственно к корневому элементу <svg> с помощью его атрибута transform. Это улучшение позволяет манипулировать всей системой координат SVG или ее содержимым целиком, обеспечивая большую гибкость при создании динамической, адаптивной и интерактивной векторной графики. Благодаря поддержке этого атрибута, элемент SVG может быть преобразован без необходимости использования дополнительных элементов-оболочек или сложных CSS-решений, что упрощает процесс создания масштабируемой и анимированной веб-графики.
Разрешите <use> ссылаться на корневой элемент внешнего документа, опустив фрагмент.
В этой функции мы упрощаем работу с элементом SVG <use> , ослабляя требования к ссылкам. В настоящее время необходимо явно указывать ссылки на фрагменты внутри документа SVG. Если идентификатор фрагмента не указан, <use> не сможет определить целевой объект, и ничего не будет отображено или указано.
Благодаря этой функции, пропуск фрагментов или указание только имени внешнего SVG-файла автоматически приведет к ссылке на корневой элемент, устраняя необходимость изменять документ, на который есть ссылка, только для присвоения идентификатора корневому элементу. Это улучшение упрощает процесс ручного редактирования и повышает эффективность.
Системный акцентный цвет для свойства accent-color расширен для Windows и ChromeOS.
Это позволяет использовать акцентный цвет операционной системы для элементов форм. Используя свойство CSS accent-color , вы можете гарантировать, что элементы форм, такие как флажки, переключатели и индикаторы выполнения, автоматически будут принимать акцентный цвет, определенный операционной системой пользователя. Эта функция поддерживается в macOS с 2021 года, а теперь поддерживается и в Windows и ChromeOS.
view-transition-name: match-element
Значение свойства match-element для свойства view-transition генерирует уникальный идентификатор на основе идентичности элемента и остается неизменным для этого элемента. Это используется в одностраничных приложениях, когда элемент перемещается, и вы хотите анимировать его с помощью перехода между представлениями.
Веб-API
Тип ошибки выравнивания, возникающий при создании учетных данных WebAuthn для платежа.
Исправлен тип ошибки, возникающей при создании учетных данных WebAuthn для payment учетных данных. Из-за исторического несоответствия спецификаций создание payment учетных данных в iframe другого источника без активации пользователя приводило к SecurityError вместо NotAllowedError , которая возникает для учетных данных, не относящихся к платежным. Это критическое изменение. Код, который ранее определял тип ошибки (например, e instanceof SecurityError ), будет затронут. Код, который просто обрабатывает ошибки во время создания учетных данных (например, catch (e) ), продолжит корректно работать.
Разделение URL-адресов BLOB-объектов: получение/навигация
В продолжение концепции разделения хранилища, здесь реализовано разделение доступа к URL-адресам BLOB-объектов по ключу хранилища (сайт верхнего уровня, источник фрейма и логическое значение has-cross-site-ancestor ), за исключением навигации по сайтам верхнего уровня, которая останется разделенной только по источнику фрейма.
Это изменение можно временно отменить, установив политику PartitionedBlobURLUsage . Эта политика будет устарела, когда будут устарели другие корпоративные политики, связанные с разделением хранилища.
Стек вызовов в отчетах о сбоях зависших веб-страниц
Эта функция фиксирует стек вызовов JavaScript, когда веб-страница перестаёт отвечать из-за бесконечного цикла выполнения кода JavaScript или других очень длительных вычислений. Это помогает разработчикам определить причину зависания и быстрее её устранить. Стек вызовов JavaScript включается в API отчётов о сбоях, если причиной является зависание.
Типы цветов плавающей точки на холсте
Вводит возможность использования форматов пикселей с плавающей запятой (в отличие от 8-битных с фиксированной запятой) с CanvasRenderingContext2D , OffscreenCanvasRenderingContext2D и ImageData . Это необходимо для приложений с высокой точностью (например, медицинской визуализации), контента с высоким динамическим диапазоном и линейных рабочих цветовых пространств.
Запретить предварительную отрисовку HTTP-данных в открытом текстовом формате, не представляющих доверия.
В настоящее время предварительная отрисовка разрешена по протоколам HTTP и HTTPS, тогда как предварительная загрузка работает только по HTTPS. Необходимо ограничить предварительную отрисовку, чтобы она соответствовала предварительной загрузке.
Политика изоляции документов
Document-Isolation-Policy позволяет документу включить crossOriginIsolation для себя, без необходимости развертывания COOP или COEP, и независимо от статуса crossOriginIsolation источниками страницы. Политика поддерживается изоляцией процессов. Кроме того, подресурсы документа, не поддерживающие CORS, будут либо загружаться без учетных данных, либо должны будут иметь заголовок CORP.
Подробнее см. в разделе «Политика изоляции документов: простое включение мощных веб-функций» .
Ed25519 по веб-криптографии
Эта функция добавляет поддержку алгоритмов Curve25519 в API веб-криптографии, а именно алгоритма подписи Ed25519.
Регистрация и отчетность по IP-адресам
Chrome Enterprise расширяет возможности мониторинга безопасности и реагирования на инциденты, собирая и передавая локальные и удаленные IP-адреса в журналы расследований безопасности (SIT). Кроме того, Chrome Enterprise позволит администраторам по желанию отправлять IP-адреса поставщикам SIEM-систем (1P и 3P) с помощью коннектора Chrome Enterprise Reporting. Эта функция будет доступна для клиентов Chrome Enterprise Core.
Интеграция JavaScript-промисов
Интеграция с промисами JavaScript (JSPI) — это API, позволяющий приложениям WebAssembly интегрироваться с промисами JavaScript. Он позволяет программе WebAssembly выступать в качестве генератора промисов и взаимодействовать с API, содержащими промисы. В частности, когда приложение использует JSPI для вызова API, содержащего промисы (JavaScript), выполнение кода WebAssembly приостанавливается; и вызывающей стороне программы WebAssembly передается промис, который будет выполнен после завершения работы программы WebAssembly.
API для определения языка
API определения языка — это JavaScript-API, который определяет язык предоставленной строки. Этот API основан на базовой модели, точно настроенной для выполнения задач определения языка.
API Language Detector, получив на вход строку, возвращает упорядоченный список обнаруженных языков, а также оценку достоверности для каждого результата.
При желании разработчики могут передать список ожидаемых входных языков при создании экземпляра Language Detector, чтобы оптимизировать его использование в сценариях, где требуется определение языка для определенных языков.
Ограничьте использование плавающих атрибутов и аргументов для SVGMatrix , SVGRect и SVGPoint
При установке атрибутов или аргументов типа float для SVGMatrix , SVGRect и SVGPoint теперь нельзя установить их как Infinity или Nan . При попытке установить их будет выброшено исключение JavaScript, как определено в спецификации SVG.
API выбора getComposedRanges и direction
В рамках этой функции добавлены два новых метода API для функции выбора:
-
Selection.directionвозвращает направление выделения в виде значений"none","forward"или"backward" -
Selection.getComposedRanges()возвращает список из 0 или 1 "составленного"StaticRange
«Составной» StaticRange может пересекать теневые границы, чего не могут обычные диапазоны.
Например:
const range = getSelection().getComposedRanges({ shadowRoots: [root] });
Если выделенная область пересекает границу теневого корня, не указанного в списке shadowRoots , то конечные точки StaticRange будут "переопределены" и окажутся за пределами этого дерева. Это гарантирует, что мы не будем раскрывать неизвестные теневые деревья.
Расширения области действия веб-приложения
Добавляет поле scope_extensions в манифест веб-приложения, позволяющее веб-приложениям расширять свою область действия на другие источники.
Пример:
{
"name": "Example",
"display": "standalone",
"start_url": "/index.html",
"scope_extensions": [
{"type" : "type", "origin" : "https://example.com"}
]
}
Это позволяет сайтам, контролирующим несколько поддоменов и доменов верхнего уровня, представляться как единое веб-приложение.
Для подтверждения связи с веб-приложением требуется, чтобы указанные источники использовали конфигурационный файл .well-known/web-app-origin-association .
{
"https://sample-app.com/": {
"scope": "/"
}
}
Подсказки по ветке WebAssembly
Повышает производительность скомпилированного кода WebAssembly, сообщая движку, что конкретная инструкция перехода с высокой вероятностью выберет определенный путь. Это позволяет движку принимать более взвешенные решения относительно компоновки кода (улучшение попаданий в кэш инструкций) и распределения регистров.
WebGPU: GPUTextureView для привязки externalTexture
Теперь при создании GPUBindGroup можно использовать GPUTextureView для привязки externalTexture .
WebGPU: перегрузка функции copyBufferToBuffer
Метод copyBufferToBuffer() класса GPUCommandEncoder теперь включает более простой способ копирования целых буферов с помощью новой перегрузки с необязательными параметрами смещения и размера.
Новые испытания происхождения
В Chrome 137 вы можете принять участие в следующих новых пробных версиях Origin .
Атрибут блокировки рендеринга с полной частотой кадров
Добавляет новый токен блокировки рендеринга full-frame-rate к атрибутам блокировки. Когда рендерер блокируется с помощью токена full-frame-rate, он будет работать с более низкой частотой кадров, чтобы зарезервировать больше ресурсов для загрузки.
Приостановка воспроизведения мультимедиа в не отображаемых iframe-элементах
Добавляет политику разрешений "media-playback-while-not-rendered" , позволяющую встраиваемым веб-сайтам приостанавливать воспроизведение медиафайлов во встроенных iframe, которые не отображаются, то есть, устанавливать свойство «display» в значение «none». Это должно позволить разработчикам создавать более удобные для пользователей интерфейсы, а также повысить производительность, позволив браузеру обрабатывать воспроизведение контента, невидимого для пользователей.
API переписывания
API Rewriter преобразует и перефразирует входной текст в соответствии с запросами, используя встроенную в устройство языковую модель на основе искусственного интеллекта. Разработчики могут использовать этот API для удаления избыточности в тексте, чтобы уложиться в лимит слов, перефразирования сообщений в соответствии с целевой аудиторией или для более конструктивного подхода, если в сообщении обнаружена токсичная лексика, перефразирования публикации или статьи с использованием более простых слов и понятий и многого другого.
API для записи
API Writer можно использовать для написания новых материалов, получив подсказку о задании, при поддержке встроенной в устройство языковой модели на основе искусственного интеллекта. Разработчики смогут использовать этот API для генерации текстовых пояснений к структурированным данным, создания постов о продуктах на основе отзывов или описаний, расширения списков преимуществ и недостатков до полноценных представлений и многого другого.