Firefox 62

В бабье лето — с новейшим Firefox 62.

CSS

  • Поддержка свойств shape-outside, shape-margin и shape-image-threshold из спецификации CSS Shapes Module Level 1. Свойство shape-outside позволяет задать невидимую геометрическую фигуру, которая будет обтекаться последующим текстом; shape-margin — отступ от фигуры; shape-image-threshold — пороговое значение непрозрачности пикселов изображения, включаемых в обтекаемый контур. Параллельно в средства разработчика добавлен инструмент Shape Path Editor, позволяющий в визуальном режиме изменять параметры существующих фигур, заданных свойствами shape-outside или clip-path.
  • Поддержка шрифтов OpenType с переменными характеристиками (OpenType Font Variations) (также известных как изменчивые, или вариативные шрифты, Variable Fonts), упомянутая в примечаниях к выпуску Firefox 62, была реализована в предыдущей версии — Firefox 61.
  • Псевдоэлемент ::selection теперь доступен без префикса -moz- для единообразия с другими браузерами. Псевдоэлемент позволяет управлять оформлением выделенной части текста с помощью ограниченного набора разрешённых свойств: color, background-color, cursor, caret-color, outline*, text-decoration*, text-emphasis-color, text-shadow.
  • Новая единица x — псевдоним единицы dppx, позволяющей применять стили с помощью правил @media в зависимости от плотности точек устройства вывода.
  • На веб-страницах теперь недоступен ряд нестандартных значений свойства display, предназначавшихся для применения в XUL-документах: -moz-grid, -moz-inline-grid, -moz-grid-group, -moz-grid-line, -moz-stack, -moz-inline-stack, -moz-deck, -moz-popup. По-прежнему поддерживаются -moz-box и -moz-inline-box, частично аналогичные соответственно свойствам flex и inline-flex из Flexbox. В Nightly- и ранних бета-версиях Firefox 63 планируется отключить поддержку свойств -moz-box и -moz-inline-box (параметр layout.css.xul-box-display-values.content.enabled в about:config) с целью собрать статистику их использования с последующим возможным отключением в одной из следующих стабильных версий.
  • Изменены значения по умолчанию свойства browser_style, управляющего применением веб-стилей по умолчанию и доступностью служебных классов на страницах пользовательского интерфейса расширений:
    • во всплывающих окнах при нажатии кнопок page_action и browser_action значение теперь false;
    • в боковых панелях (sidebar_action) и интерфейсе настроек расширения options_ui значение теперь true.

JavaScript, DOM

  • Поддержка методов flat() и flatMap() массивов (объектов Array). Метод flat() заменяет вложенные массивы хранящимися в них элементами — по умолчанию на один уровень вложенности, но можно задать произвольный. Вызов flat() также удаляет из массива элементы без значений. Вызов метода flatMap() эквивалентен последовательному вызову map() и flat() с глубиной вложенности 1.
  • Поддержка объекта import.meta, содержащего специфичные для контекста данные, доступные внутри модуля. Свойство url этого объекта содержит URL-адрес файла, в котором определён модуль. Поддержка ES-модулей доступна начиная с Firefox 60.
  • Юникод-символы U+2028 (LINE SEPARATOR, LS) и U+2029 (PARAGRAPH SEPARATOR, PS) теперь можно использовать в строковых литералах напрямую, без необходимости экранирования. Благодаря этому устраняется противоречие между спецификациями JSON, где эти символы в строках разрешены, и ECMAScript (ECMA-262), согласно которому ранее требовалось их экранировать.
  • Программный интерфейс (API) синтеза речи (Speech synthesis) из Web Speech API теперь включён по умолчанию в Android-версии Firefox. В настольных версиях Firefox функциональность доступна начиная с Firefox 49.
  • Поддержка свойства srcElement как псевдонима стандартного свойства target объектов Event для совместимости со скриптами, ориентированными на браузер Internet Explorer. Свойство target содержит объект, к которому относится обрабатываемое событие.
  • Свойство document.domain теперь при отсутствии домена (например, в локальных HTML-файлах) возвращает пустую строку вместо null.
  • События DOMSubtreeModified и DOMAttrModified в рамках устаревшего механизма Mutation events теперь не инициируются при изменении атрибута style средствами CSSOM, что в некоторых случаях приводило к бесконечному циклу и зависанию браузера. Вместо Mutation-событий следует использовать современный механизм MutationObserver, свободный от этой проблемы.

См. также официальные примечания к выпуску и информацию для разработчиков.