Опубликовано: 3 апреля 2025 г.
Если не указано иное, следующие изменения относятся к новейшей бета-версии Chrome для Android, ChromeOS, Linux, macOS и Windows. Подробнее о перечисленных здесь функциях можно узнать по предоставленным ссылкам или из списка на ChromeStatus.com . Chrome 136 находится в бета-версии по состоянию на 3 апреля 2025 года. Вы можете загрузить последнюю версию на Google.com для настольных компьютеров или в Google Play Store для Android.
CSS и UI
В этом релизе добавлены шесть новых функций CSS и пользовательского интерфейса.
Свойство CSS dynamic-range-limit
Позволяет ограничить максимальную яркость HDR-контента на странице.
Игнорировать межбуквенные расстояния в курсивном письме.
Эта функция добавляет логику, позволяющую игнорировать настройку межбуквенного расстояния для курсивных шрифтов, даже если она указана разработчиком в соответствии со спецификацией, чтобы гарантировать, что межбуквенное расстояние не будет нарушать структуру слов.
Разделение на разделы :visited ссылок
Чтобы исключить утечку истории просмотров пользователей, элементы привязки получают стиль :visited только в том случае, если на них ранее был совершен клик с этого сайта верхнего уровня и из этого фрейма.
Благодаря стилизации только тех ссылок, по которым уже переходили на этом сайте и во фрейме, многочисленные атаки по побочным каналам, разработанные для получения информации о стилизации ссылок :visited теперь устарели. Они больше не предоставляют сайтам новую информацию о пользователях.
Узнайте больше об этих улучшениях в обеспечении конфиденциальности :visited ссылок .
Переименуйте тип string attr() в raw-string
Рабочая группа CSS приняла решение заменить тип string attr() на raw-string .
Поэтому Chrome изменил синтаксис функции attr() , так что attr(data-foo string) теперь будет attr(data-foo raw-string) .
Типонезависимый резервный вариант var()
Резервная часть функции var() не проверяет тип используемого пользовательского свойства.
Без префикса print-color-adjust
Свойство print-color-adjust позволяет настраивать цвета на печатных веб-страницах. Это аналогично уже поддерживаемому в Chrome -webkit-print-color-adjust , но со стандартизированным названием. Версия с префиксом -webkit не удалена.
Веб-API
Состояние прерывания AudioContext
Добавляет состояние "interrupted" к AudioContextState . Это новое состояние позволяет пользовательскому агенту приостанавливать воспроизведение в подобных сценариях и давать веб-приложениям возможность адекватно реагировать.
Разделение URL-адресов BLOB-объектов: получение/навигация
В продолжение концепции разделения хранилища, здесь реализовано разделение доступа к URL-адресам BLOB-объектов по ключу хранилища (сайт верхнего уровня, источник фрейма и логическое значение has-cross-site-ancestor), за исключением навигации по сайтам верхнего уровня, которая останется разделенной только по источнику фрейма. Такое поведение аналогично тому, что в настоящее время реализовано в Firefox и Safari, и приводит использование URL-адресов BLOB-объектов в соответствие со схемой разделения, используемой другими API хранилища в рамках концепции разделения хранилища.
Кроме того, теперь noopener применяется к инициируемым рендерером переходам верхнего уровня к URL-адресам Blob, если соответствующий сайт является межсайтовым по отношению к сайту верхнего уровня, выполняющему навигацию. Это приводит поведение Chrome в соответствие с аналогичным поведением в Safari, и соответствующие спецификации были обновлены с учетом этих изменений.
Стек вызовов в отчетах о сбоях зависших веб-страниц
Эта функция фиксирует стек вызовов JavaScript, когда веб-страница перестаёт отвечать из-за бесконечного цикла выполнения кода JavaScript или других очень длительных вычислений. Это помогает разработчикам определить причину зависания. Стек вызовов JavaScript включается в API отчётов о сбоях, если причиной является зависание.
API управления захваченной поверхностью
API Captured Surface Control позволяет веб-приложениям перенаправлять события прокрутки колесика мыши на захваченную вкладку, а также считывать и изменять уровень масштабирования захваченной вкладки.
CapturedSurfaceResolution
Эта функция отображает соотношение пикселей захваченной поверхности во время демонстрации экрана. Она поможет приложениям экономить системные ресурсы или адаптировать соотношение качества и пропускной способности в соответствии с физическим и логическим разрешением захваченной поверхности.
Перенаправлять события щелчка на захваченный указатель.
Если указатель перехватывается во время обработки события pointerup , событие click будет отправлено на перехваченный целевой объект, а не на ближайший общий предок событий pointerdown и pointerup , как это предусмотрено спецификацией событий пользовательского интерфейса. Для незахваченных указателей целевой объект click остается неизменным.
Явные подсказки компиляции с помощью магических комментариев.
Позволяет добавлять информацию о том, какие функции следует предварительно анализировать и компилировать в JavaScript-файлах. Эта информация будет закодирована в виде «магических» комментариев.
Обновления FedCM: поддержка нескольких поставщиков идентификации, удаление функции «добавить еще одну учетную запись» в пассивном режиме.
Благодаря этому обновлению FedCM может отображать несколько поставщиков идентификации в одном диалоговом окне. Это предоставляет разработчикам удобный способ представить пользователям все поддерживаемые поставщики идентификации. В первую очередь мы планируем решить простую задачу, когда все поставщики находятся в одном вызове метода get() . Мы также удаляем поддержку функции «добавить другую учетную запись» в пассивном режиме FedCM. Эта функция позволяет отображать кнопку «использовать другую учетную запись» рядом с другими учетными записями поставщиков идентификации в окне выбора. В настоящее время эта функция не используется, и обсуждения пользовательского опыта показали, что ее поддержка приводит к усложнению процесса без особых преимуществ. Эта функция по-прежнему будет работать в активном режиме FedCM.
Плавные полосы прокрутки.
Эта функция модернизирует полосы прокрутки Chrome (как наложенные, так и обычные) в Windows и Linux, чтобы они соответствовали дизайну Windows 11 Fluent. Обычные полосы прокрутки Fluent будут включены по умолчанию в Linux и Windows. Это изменение также применяется к Linux, поскольку дизайн полос прокрутки Chrome для Linux исторически соответствовал тому, что поставляется с Windows.
Поддержка кодека H265 (HEVC) в WebRTC
Начиная с Chrome 136, HEVC присоединится к VP8, H.264, VP9 и AV1 в качестве поддерживаемых кодеков в WebRTC. Поддержка будет доступна для запроса с помощью API MediaCapabilities.
Этот новый кодек обладает повышенной эффективностью сжатия (более высоким качеством на битрейт) по сравнению с кодеками предыдущего поколения, такими как VP8 и H264, и имеет очень сильную аппаратную поддержку, существующую уже более десяти лет. Это приводит к увеличению времени автономной работы и снижению риска проблем с производительностью, а также, в зависимости от производительности используемого аппаратного кодировщика, часто улучшает качество изображения в случаях, когда аппаратные кодировщики VP9 или AV1 недоступны.
Обновления поддержки кодека H26x для MediaRecorder.
API MediaRecorder теперь поддерживает кодирование HEVC, вводя строку кодека hvc1.* , и добавляет новые кодеки ( hev1.* и avc3.* ), поддерживающие видео с переменным разрешением в формате MP4. Поддержка кодирования платформы HEVC была добавлена в WebCodecs в Chrome 130. В качестве продолжения, поддержка была добавлена в API MediaRecorder в Chromium. API теперь поддерживает как мультиплексоры MP4, так и Matroska с различными спецификациями MIME-типов HEVC и H.264. Кодирование HEVC поддерживается только в том случае, если устройство и операционная система пользователя предоставляют необходимые возможности.
Регистрация и отображение IP-адресов в Chrome Enterprise
Chrome Enterprise расширяет возможности мониторинга безопасности и реагирования на инциденты, собирая и передавая локальные и удаленные IP-адреса в журналы расследований безопасности (SIT). Кроме того, Chrome Enterprise позволит администраторам по желанию отправлять IP-адреса сторонним и собственным поставщикам SIEM-систем с помощью коннектора Chrome Enterprise Reporting. Эта функция будет доступна для клиентов Chrome Enterprise Core.
Включите инициатор навигации в ключ раздела HTTP-кэша.
В схему кэширования HTTP в Chrome добавлен логический параметр is-cross-site-main-frame-navigation для предотвращения межсайтовых атак с утечкой данных, связанных с навигацией верхнего уровня. В частности, это предотвратит межсайтовые атаки, при которых злоумышленник может инициировать навигацию верхнего уровня на заданную страницу, а затем перейти к ресурсу, заведомо загружаемому этой страницей, чтобы получить конфиденциальную информацию из времени загрузки. Это изменение также повышает конфиденциальность, предотвращая использование вредоносным сайтом навигации для определения того, посещал ли пользователь данный сайт ранее.
Языковая поддержка для CanvasTextDrawingStyles
Элемент DOM <canvas> , как и все элементы DOM, принимает атрибут lang , который используется для определения языковой обработки выбора шрифта (когда шрифты имеют локальные глифы). Браузеры учитывают этот атрибут. Однако при создании OffscreenCanvas нет возможности задать информацию о локали, что может привести к ситуации, когда результаты отрисовки внеэкранного холста будут отличаться от результатов отрисовки холста, на котором используется его вывод. Эта функция добавляет атрибут lang IDL к CanvasTextDrawingStyles , чтобы обеспечить прямой контроль над языком отрисовки текста и метриками.
Отчеты о политике разрешений для iframe
Вводится новый тип нарушения, называемый «Потенциальное нарушение политики разрешений», который будет учитывать только политику разрешений (включая политику только для отчетов) и атрибут allow установленный в iframe, для обнаружения конфликта между применяемой политикой разрешений и разрешениями, распространяемыми на iframe.
Предсказуемая заявленная квота на хранение
API оценки StorageManager выдает прогнозируемый объем хранилища для сайтов, не имеющих неограниченных прав доступа к хранилищу. С помощью полученного объема хранилища можно определить режим просмотра пользователя, поскольку в режиме инкогнито доступное пространство значительно меньше, чем в обычном режиме.
API для частной агрегации: отчеты об ошибках агрегации.
При использовании API частной агрегации может возникать ряд ошибок. Например, может исчерпаться бюджет конфиденциальности, что предотвратит дальнейшие публикации в виде гистограмм. Эта функция позволяет разработчикам регистрировать публикации в виде гистограмм, которые должны отправляться только при возникновении определенного типа ошибки. Эта функция поддерживает измерение частоты возникновения ошибок и разделение этих измерений по соответствующим параметрам, указанным разработчиком (например, версия развернутого кода). Поскольку сами ошибки могут представлять собой информацию, относящуюся к нескольким сайтам, мы не можем просто отображать ее на странице для пользователей без сторонних файлов cookie. Вместо этого эта функция использует существующие конвейеры агрегированной отчетности с шумом через службу агрегации.
RegExp.escape
RegExp.escape — это статический метод, который принимает строку и возвращает экранированную версию, которую можно использовать в качестве шаблона в регулярном выражении. Например:
const str = prompt("Please enter a string");
const escaped = RegExp.escape(str);
const re = new RegExp(escaped, 'g'); // handles reg exp special tokens with the replacement.
console.log(ourLongText.replace(re));
Правила спекуляций: поле тега
Позволяет разработчикам добавлять field тегов к правилам спекулятивного выполнения. Это необязательное поле может использоваться для отслеживания источника правил спекулятивного выполнения. Например, для обработки их по-разному на промежуточном сервере. Любые теги, связанные со спекулятивным выполнением, будут отправлены с заголовком Sec-Speculation-Tags .
Строгая политика ограничения доступа к хранилищу на основе принадлежности к одному источнику.
Вносит изменения в семантику API доступа к хранилищу, чтобы строго следовать политике одного источника. То есть, использование document.requestStorageAccess() во фрейме по умолчанию прикрепляет файлы cookie только к запросам к источнику iframe (а не к сайту). Обратите внимание, что политика CookiesAllowedForUrls или заголовки доступа к хранилищу по-прежнему могут использоваться для разблокировки межсайтовых файлов cookie.
Обновите ProgressEvent , чтобы для loaded и total использовался тип double.
ProgressEvent имеет атрибуты loaded и total указывающие на прогресс, и их тип теперь unsigned long long . Благодаря этой функции тип этих двух атрибутов изменяется на double , что дает разработчику больше контроля над значением. Например, теперь разработчики могут создать ProgressEvent с total равным 1 и loaded , постепенно увеличивающимся от 0 до 1. Это соответствует поведению по умолчанию элемента HTML <progress> , если атрибут max опущен.
Используйте DOMPointInit для getCharNumAtPosition , isPointInFill и isPointInStroke
Это изменение приводит код Chromium в соответствие с последней спецификацией W3C для SVGGeometryElement и SVGPathElement в части использования DOMPointInit вместо SVGPoint для getCharNumAtPosition , isPointInFill , isPointInStroke .
Создание условной аутентификации веб-системы (обновление паролей)
Условные запросы на создание через WebAuthn позволяют веб-сайтам преобразовывать существующие учетные данные пароля в ключ доступа.
WebGPU: атрибут GPUAdapterInfo isFallbackAdapter
Логический атрибут GPUAdapterInfo isFallbackAdapter указывает, имеет ли адаптер существенные ограничения производительности в обмен на более широкую совместимость, более предсказуемое поведение или улучшенную конфиденциальность. Обратите внимание, что резервный адаптер может отсутствовать в некоторых системах.
Новые испытания происхождения
В Chrome 136 вы можете принять участие в следующих новых пробных версиях Origin .
API устройств вывода звука: setDefaultSinkId()
Эта функция добавляет setDefaultSinkId() к MediaDevices, что позволяет фрейму верхнего уровня изменять устройство вывода звука по умолчанию, используемое его подфреймами.
Пусть веб-приложения понимают бимодальный режим измерения времени выполнения.
Веб-приложения могут страдать от бимодального распределения производительности загрузки страниц из-за факторов, не зависящих от самого веб-приложения. Например:
- При первом запуске пользовательского агента (сценарий «холодного старта») ему необходимо выполнить множество дорогостоящих задач инициализации, которые конкурируют за ресурсы системы.
- Расширения для браузера могут влиять на производительность веб-сайта. Например, некоторые расширения запускают дополнительный код на каждой посещаемой вами странице, что может увеличить нагрузку на процессор и привести к замедлению времени отклика.
- Когда машина занята выполнением ресурсоемких задач, это может привести к замедлению загрузки веб-страниц.
В таких сценариях контент, который веб-приложение пытается загрузить, будет конкурировать с другой работой, происходящей в системе. Это затрудняет выявление проблем с производительностью внутри самих веб-приложений или из-за внешних факторов.
Новое поле confidence в объекте PerformanceNavigationTiming позволит разработчикам определить, насколько время навигации соответствует характеристикам их веб-приложения.
Учетные данные сеанса, привязанные к устройству
Способ, позволяющий веб-сайтам безопасно привязывать сессию к одному конкретному устройству.
Это позволяет серверам иметь сессию, надежно привязанную к устройству. Браузер будет периодически обновлять сессию по запросу сервера, подтверждая наличие закрытого ключа.
Обновление реализации отрисовки текста на холсте.
Внутренние функции measureText() , fillText() и strokeText() классов CanvasRenderingContext2D и OffscreenCanvasRenderingContext2D были заменены новой реализацией, которая лучше поддерживает текст справа налево и кэширование. Это может повлиять на производительность и вывод текста в формате BIDI, поэтому данное пробное использование позволяет приложениям, работающим с большим количеством текста на холсте, протестировать новую реализацию и сообщить о любых проблемах, с которыми они могут столкнуться.
Амортизация и удаление
В этой версии Chrome внесены следующие изменения, как устаревшие, так и удаленные. Список запланированных, текущих и ранее удаленных изменений можно найти на сайте ChromeStatus.com.
В этой версии Chrome две функции устарели.
Устаревшие методы получения информации о международной локали
API Intl Locale Info — это предложение TC39 третьего этапа ECMAScript, направленное на расширение объекта Intl.Locale путем предоставления информации о локали, такой как данные о неделе (первый день недели, день начала выходных, день окончания выходных, минимальный день первой недели) и часовой цикл направления текста, используемый в локали. Это изменение удаляет некоторые геттеры, которые устарели после внесения изменений в спецификацию.
Удалите HTMLFencedFrameElement.canLoadOpaqueURL() .
canLoadOpaqueURL() была заменена на navigator.canLoadAdAuctionFencedFrame() в 2023 году, и с тех пор её вызов приводит к предупреждению в консоли об устаревании, указывающему разработчикам на новый API. Нет смысла прикреплять эту функцию к HTMLFencedFrameElement ; вместо этого её следует прикреплять к объекту navigator (который содержит другие методы для работы с фреймами и аукционами рекламы).