Chrome 83 уже начинает распространяться как стабильная версия.
Вот что вам нужно знать:
- Доверенные типы помогают предотвратить уязвимости межсайтового скриптинга.
- Элементы формы претерпевают существенные изменения .
- Появился новый способ обнаружения утечек памяти .
- API собственной файловой системы запускает новую пробную версию Origin с дополнительными функциями.
- Появились новые политики кросс-происхождения
- Мы внедрили программу Web Vitals , чтобы предоставить единое руководство по качественным сигналам, которые, по нашему мнению, необходимы для обеспечения отличного пользовательского опыта в Интернете.
- И многое другое .
Меня зовут Пит ЛеПейдж , я работаю и снимаю из дома. Давайте углубимся в детали и посмотрим, что нового появилось в Chrome 83 для разработчиков!
Надежные типы
Межсайтовый скриптинг на основе DOM — одна из самых распространенных уязвимостей безопасности в Интернете. Случайно внедрить его на свою страницу может быть легко. Доверенные типы могут помочь предотвратить такие уязвимости, поскольку они требуют обработки данных перед передачей их в потенциально опасную функцию.
Возьмем, к примеру, innerHTML
: если я попытаюсь передать строку при включенных доверенных типах, произойдет ошибка TypeError, поскольку браузер не знает, можно ли доверять этой строке.
// Trusted types turned on
const elem = document.getElementById('myDiv');
elem.innerHTML = `Hello, world!`;
// Will throw a TypeError
Вместо этого мне нужно либо использовать безопасную функцию, например textContent
, передать доверенный тип, либо создать элемент и использовать appendChild()
.
// Use a safe function
elem.textContent = ''; // OK
// Pass in a trusted type
import DOMPurify from 'dompurify';
const str = `Hello, world!`;
elem.innerHTML = DOMPurify.sanitize(str, {RETURN_TRUSTED_TYPE: true});
// Create an element
const img = document.createElement('img');
img.src = 'xyz.jpg';
elem.appendChild(img);
Прежде чем включить доверенные типы, вам необходимо выявить и устранить любые нарушения с помощью заголовка CSP report-only
.
Content-Security-Policy-Report-Only: require-trusted-types-for 'script'; report-uri //example.com
Затем, как только вы все застегнете, вы сможете включить его должным образом. Полные сведения см. в разделе Предотвращение уязвимостей межсайтового скриптинга на основе DOM с помощью доверенных типов на web.dev.
Обновления элементов управления формами
Мы используем элементы управления HTML-формами каждый день, и они играют ключевую роль в интерактивности веба. Они просты в использовании, имеют встроенную доступность и знакомы нашим пользователям. Стиль элементов управления формами может быть непоследовательным в разных браузерах и операционных системах. И нам часто приходится отправлять ряд правил CSS, чтобы получить единообразный вид на разных устройствах.


Я был действительно впечатлен работой Microsoft по модернизации внешнего вида элементов управления формами. Помимо более приятного визуального стиля, они обеспечивают лучшую поддержку сенсорного ввода и лучшую доступность, включая улучшенную поддержку клавиатуры!
Новые элементы управления формами уже появились в Microsoft Edge и теперь доступны в Chrome 83. Для получения дополнительной информации см. разделы Обновления элементов управления формами и Focus в блоге Chromium.
Испытания происхождения
Измерение памяти с помощью measureMemory()
Начиная с пробной версии в Chrome 83, performance.measureMemory()
— это новый API, который позволяет измерять использование памяти вашей страницей и обнаруживать утечки памяти.
Утечки памяти легко могут возникнуть:
- Забыли отменить регистрацию прослушивателя событий
- Захват объектов из iframe
- Не закрывать работника
- Накопление объектов в массивах
- и так далее.
Утечки памяти приводят к тому, что страницы кажутся пользователям медленными и перегруженными.
if (performance.measureMemory) {
try {
const result = await performance.measureMemory();
console.log(result);
} catch (err) {
console.error(err);
}
}
Ознакомьтесь со статьей «Отслеживание общего использования памяти вашей веб-страницей с помощью measureMemory()
на сайте web.dev, чтобы узнать все подробности о новом API.
Обновления API собственной файловой системы
API Native File System начал новую пробную версию в Chrome 83 с поддержкой записываемых потоков и возможностью сохранения дескрипторов файлов.
async function writeURLToFile(fileHandle, url) {
// Create a FileSystemWritableFileStream to write to.
const writable = await fileHandle.createWritable();
// Make an HTTP request for the contents.
const response = await fetch(url);
// Stream the response into the file.
await response.body.pipeTo(writable);
// pipeTo() closes the destination pipe automatically.
}
Записываемые потоки значительно упрощают запись в файл, а поскольку это поток, вы можете легко передавать ответы из одного потока в другой.
Сохранение дескрипторов файлов в IndexedDB позволяет вам сохранять состояние или помнить, с какими файлами работал пользователь. Например, сохранять список недавно отредактированных файлов, открывать последний файл, с которым работал пользователь, и т. д.
Для использования этих функций вам понадобится новый пробный токен Origin, поэтому ознакомьтесь с моей обновленной статьей API собственной файловой системы: упрощение доступа к локальным файлам на web.dev, в которой вы найдете все подробности и узнаете, как получить новый пробный токен Origin.
Другие испытания происхождения
Проверять для получения полного списка функций в пробной версии Origin.
Новые политики кросс-происхождения
Некоторые веб-API повышают риск атак по сторонним каналам, таких как Spectre. Чтобы снизить этот риск, браузеры предлагают изолированную среду на основе согласия, называемую изолированной кросс-источником. Изолированное кросс-источником состояние также предотвращает изменения document.domain
. Возможность изменять document.domain
позволяет осуществлять связь между документами одного сайта и считается лазейкой в политике одного источника.
Подробную информацию можно найти в статье Эйджи «Создание «междоменной изоляции» вашего сайта с помощью COOP и COEP» .
Веб-показатели
Измерение качества пользовательского опыта имеет много аспектов. Хотя некоторые аспекты пользовательского опыта зависят от сайта и контекста, существует общий набор сигналов — « Core Web Vitals », — который имеет решающее значение для всех веб-опытов. Такие основные потребности пользовательского опыта включают в себя опыт загрузки, интерактивность и визуальную стабильность содержимого страницы, и в совокупности являются основой Core Web Vitals 2020 года.
- Наибольшая отрисовка контента измеряет воспринимаемую скорость загрузки и отмечает точку на шкале времени загрузки страницы, когда ее основное содержимое, скорее всего, уже загружено.
- Задержка первого ввода измеряет скорость реагирования и количественно определяет впечатления пользователей при первой попытке взаимодействия со страницей.
- Накопительное смещение макета измеряет визуальную стабильность и количественно определяет величину непредвиденного смещения макета видимого содержимого страницы.
Все эти метрики фиксируют важные результаты, ориентированные на пользователя, измеримы в полевых условиях и имеют эквиваленты и инструменты лабораторной диагностики метрик. Например, хотя «Наибольшая отрисовка контента» является метрикой загрузки верхнего уровня, она также сильно зависит от «Первой отрисовки контента» (FCP) и «Времени до первого байта» (TTFB), которые по-прежнему критически важны для мониторинга и улучшения.
Чтобы узнать больше, ознакомьтесь со статьей «Введение в Web Vitals: основные показатели для здорового сайта» в блоге Chromium для получения полной информации.
И многое другое
- Chrome теперь поддерживает API обнаружения штрихкодов , который обеспечивает возможность обнаружения и декодирования штрихкодов.
- Новая функция CSS
@supports
обеспечивает обнаружение функций для селекторов CSS. - Новые аннотации ARIA поддерживают доступность для экранного диктора для комментариев, предложений и выделения текста семантическими значениями (аналогично
<mark>
). - Медиазапрос
prefers-color-scheme
позволяет авторам поддерживать собственную темную тему, чтобы иметь полный контроль над создаваемым ими опытом. - JavaScript теперь поддерживает модули в общих рабочих процессах .
Хотите узнать, что будет в будущем? Проверьте Fugu API Tracker, чтобы узнать!
Дальнейшее чтение
Это охватывает только некоторые из ключевых моментов. Проверьте ссылки ниже для дополнительных изменений в Chrome 83.
- Что нового в Chrome DevTools (83)
- Устаревание и удаление Chrome 83
- Обновления ChromeStatus.com для Chrome 83
- Что нового в JavaScript в Chrome 83
- Список изменений в исходном репозитории Chromium
Подписаться
Хотите быть в курсе наших видео? Подпишитесь на наш канал Chrome Developers на YouTube , и вы будете получать уведомления по электронной почте каждый раз, когда мы выпускаем новое видео.
Меня зовут Пит ЛеПейдж, и мне нужна стрижка, но как только выйдет Chrome 84, я сразу же расскажу вам, что нового в Chrome!