Firefox 101

31 мая — в пред­дверии лета и на следующий день после 42-летия вашего покорного слуги — первый выпуск веб-браузера Firefox во второй сотне версий. А в день 20-летия защиты диплома — традиционный русско­язычный обзор. 🙂

CSS

  • Поддержка свойства prefers-contrast в медиа­условиях (Media Queries). Позволяет определить, повышенную (more) или пониженную (less) контрастность пользователь выбрал как пред­почти­тельную для веб-контента. Особое значение custom означает, что пользователь задал собственную цветовую палитру, контрастность которой невозможно одно­значно отнести к повышенной или пониженной.
  • Поддержка трёх новых логических размеров видимой части страницы (viewport): малый (s), большой (l) и динамический (d). Этим размерам соответствуют ситуации, когда динамически отображаемые элементы интерфейса браузера отображаются, скрыты или отображаются динамически, соответ­ственно. Функцио­нальность используется с помощью новых процентных единиц измерения, зависящих от размера видимой части страницы: svh, lvh, dvh, svw, lvw, dvw, svmax, lvmax, dvmax, svmin, lvmin, dvmin, добавленных в дополнение к сущест­вовавшим более общим аналогичным единицам vh, vw, vmax, vmin. Кроме того, теперь поддер­живаются процентные единицы vb и vi, которые зависят от размера содержащего элемент блока по осям блоков (block axis) и строки (inline axis) соответ­ственно.

JavaScript, DOM

  • Поддержка свойства HTMLMediaElement.preservesPitch без префикса moz. Нестандартное свойство mozPreservesPitch теперь является псевдонимом стандартного preservesPitch, но не рекомендуется к использованию, т. к. его поддержку в дальнейшем могут удалить. Свойство управляет сохранением высоты тона при изменении скорости воспроизведения, задаваемой свойством HTMLMediaElement.playbackRate.
  • Поддержка метода HTMLInputElement.showPicker(), позволяющего отобразить диалог выбора цвета для опреде­лённого элемента INPUT в результате действия пользователя в отношении другого элемента, например, кнопки.
  • Поддержка сериализации объектов DOMException, благодаря чему можно создавать их копии с помощью метода structuredClone() или копировать между worker-скриптами с помощью метода postMessage().
  • Поддержка конструируемых таблиц стилей (Constructable Stylesheets), призванных значительно упростить создание повторно используемых таблиц стилей в Shadow DOM. Новая функциональность включает в себя конструктор CSSStyleSheet() для создания новых таблиц стилей и методы replace() и replaceSync() для добавления CSS-правил в них.
  • Поддержка синтак­сического разбора (парсинга) параметров видео­кодека AV1 в медиа­условиях проверки поддержки функцио­нальности. Методы MediaCapabilities.decodingInfo(), HTMLMediaElement.canPlayType() и MediaSource.isTypeSupported() теперь возвращают точные данные о поддержке вос­про­изведения видео в формате AV1 согласно заданным параметрам кодека. Метод MediaCapabilities.decodingInfo() также использует эту информацию для предо­ставления точной информации об эффективном декодировании (efficient decoding) видео­роликов AV1. Формат AV1 поддерживается начиная с Firefox 65.

Разработка расширений

  • Поддержка единого программного интерфейса (API) scripting для исполнения JS-сценариев, вставки и удаления CSS-стилей и управления регистрацией контент-скриптов. API призван заменить ранее доступные раздельные API для исполнения скриптов и вставки/удаления CSS средствами tabs API. API scripting доступен в Firefox 101 для расширений, использующих новую, третью версию манифеста (Manifest V3), а начиная с Firefox 102 планируется сделать его доступным для исполь­зования в расширениях на основе манифеста предыдущей, второй версии.
  • Поддержка нового action API, призванного функцио­нально заменить browserAction API в расширениях на основе Manifest V3. Параллельно добавлен соответ­ствующий ключ манифеста action. При этом browserAction API и ключ манифеста browser_action доступны только в расширениях на основе Manifest V2.
  • Свойство persistent в ключе манифеста background можно установить в значение false на странице скрытых настроек about:config: с помощью параметра extensions.eventPages.enabled для расширений на основе Manifest V2, и extensions.manifestV3.enabled — для расширений на основе Manifest V3. Значение false означает, что в состоянии простоя браузер может выгрузить background-страницу, и данные могут быть утеряны. Установка в значение true в расширениях на основе Manifest V3 невозможна, для хранения данных следует использовать storage API.
  • Поддержка ключа манифеста host_permissions для расширений на основе Manifest V3. Ключ служит для запроса доступа к API, позволяющим читать или изменять специфичные для домена данные, в том числе cookies, webRequest и tabs.
  • Изменения в отношении исполнения контент-скриптов в расширениях на основе Manifest V3:

    • Контент-скрипты больше не могут отправлять меж­доменные запросы (cross-origin requests) исходя из разрешений для домена (host permissions). Теперь следует использовать CORS.
    • Удалён объект content, предо­ставлявший функцио­нальность content.fetch, content.XMLHttpRequest и content.WebSocket.
  • Поддержка события storage.StorageArea.onChanged для отслеживания изменений содержимого хранилищ local и sync.

Прочее

  • Теперь можно назначить действие, осущест­вляемое после скачивания файлов определённых MIME-типов.
  • Возможность исполь­зовать несколько микро­фонов одно­временно при видео­связи и свободно переключаться между ними.
  • Новый параметр print.prefer_system_dialog в about:config позволяет включить исполь­зование системного диалога печати вместо собственного диалога Firefox.
  • Новый параметр командной строки --disable-pinch позволяет отключить масштаби­рование пальцами (pinch zooming) при работе Firefox в режиме киоска.

См. также