Firefox 78

Firefox 78 — второй летний выпуск свободного веб-браузера.

CSS

Псевдо­классы :is() и :where()

Долгожданная поддержка псевдо­классов-функций :is() и :where(). Они позволяют укоротить перечисления селекторов, содержащих повто­ряющиеся части, путём перечисления только разли­чающихся частей селекторов внутри :is() или :where().

Было:
SECTION .foo .bar,
ARTICLE .foo .bar,
ASIDE   .foo .bar,
NAV     .foo .bar {}
Стало:
:is(SECTION, ARTICLE, ASIDE, NAV) .foo .bar {}

Кроме того, в отличие от обычных селекторов, указание не поддер­живаемого браузером селектора в списке селекторов внутри :is()/:where() не приводит к игнорированию всего правила, игнорируется только соответствующий селектор внутри :is()/:where(). Это поможет предотвратить вынужденное дублирование целиком правил.

Игнорируется всё правило:
:valid, :unsupported {}
Игнорируется только неподдер­живаемый селектор из перечисленных в :is():
:is(:valid, :unsupported) {}

Ранее вместо :is() был псевдо­класс :any(), доступный с префиксами (:-moz-any(), :-webkit-any()), и описанный в черновике специ­фикации псевдо­класс :matches() (доступен в Chromium), но позднее рабочая группа CSS склонилась к :is() как смысловой противо­положности псевдо­класса :not(). В отличие от :any(), внутри :is() и :where() можно использовать составные селекторы с комбинаторами.

Работают :is() и :where() аналогично, но :is() имеет специфичность наиболее специфичного из аргументов, а специфичность :where() нулевая.

Псевдо­классы :read-only и :read-write без префиксов

Псевдо­классы :read-only и :read-write теперь поддерживаются без префиксов.

Псевдо­класс :read-write соответствует элементам, содержимое которых пользователь может редак­тировать — например, текстовые поля форм (INPUT и TEXTAREA) и доступные для визуального (WYSIWYG) редакти­рования элементы с атрибутом contenteditable.

Псевдо­класс :read-only имеет противо­положный смысл и соответствует, например, текстовым полям форм с атрибутом disabled и элементам форм, по своей природе не пред­полагающим редак­тирования — например, SELECT.

JavaScript, DOM

  • Теперь используется движок регулярных выражений из JS-движка V8, используемого в браузерном движке Chromium и в скриптовой среде Node.js. Благодаря этому появились новые полезные возможности:

    • поиск с учётом пред­шествующей подстроки без её включения в захва­ченную подстроку (look­behind assertions) (баг 1225665);
    • однострочный режим (dotAll), включаемый флагом s, в котором символ . (точка) в регулярном выражении соответствует действительно любым символам, в том числе символам перевода строки (баг 1361856). Включён ли одно­строчный режим для конкретного объекта RegExp, можно узнать с помощью булева свойства dotAll, доступного только для чтения. При исполь­зовании флага s в много­строчном режиме (m) символы перевода строки включаются в найденные подстроки;
    • поиск символов опреде­лённого типа (Unicode property escapes) — например, эмодзи (emoji) (баг 1361876);
    • именованные подстроки (named capture groups), позволяющие получить доступ к найденной подстроке как к свойству с заранее заданным именем вместо доступа по числовому индексу (баг 1362154).
  • Поддержка DOM-метода replaceChildren(), который заменяет содержимое элемента переданными узлами. Если узлы не переданы, содержимое элемента удаляется аналогично присвоению пустой строки свойству textContent.
  • Поддержка объекта Intl.ListFormat, позволяющего генерировать текстовое пред­ставление списков, соответ­ствующее заданному языку.

Прочее

  • Использование движка отрисовки WebRender, написанного на языке Rust, включено для компьютеров с графи­ческим ядром Intel при работе от электросети и исполь­зовании опера­ционной системы Windows 10. Таким образом, теперь WebRender по умолчанию используется на компьютерах под управлением Windows 10 с видео­картами любого из основных производителей: AMD, nVidia, Intel.
  • На Firefox 78 основана новая корпоративная версия браузера с длительным сроком поддержки (ESR). Предыдущая ESR-версия была основана на Firefox 68.

См. также