Firefox 63

Новая версия свободного веб-браузера Firefox 63 дарит множество новых возможностей.

JavaScript, DOM

  • Поддержка механизмов Shadow DOM (баг 1471947) и Custom Elements (баг 1471948) в рамках концепции веб-компонентов (Web Components).

    Shadow DOM даёт возможность инкапсуляции нестандартной функциональности, представленной в HTML-документе в виде обычного элемента.

    Custom Elements позволяет использовать нестандартные HTML-элементы. Во избежание конфликтов со стандартными элементами теги нестандартных элементов обязаны содержать как минимум один дефис, например: <foo-bar>. Для регистрации нестандартного элемента используется метод CustomElementRegistry.define().

  • Поддержка программного интерфейса (API) Media Capabilities, призванного дать веб-приложениям возможность выбирать параметры воспроизведения видео- и аудиоафайлов, наиболее эффективные по быстродействию, энергопотреблению и другим критериям с учётом возможностей конкретного устройства.
  • Поддержка методов writeText() и readText() объектов navigator.clipboard в рамках Async Clipboard API. Методы представляют собой удобные средства копирования текста в буфер обмена и чтения из него.

    Чтение содержимого буфера доступно только в расширениях при условии наличия разрешения (permission) clipboardRead. Копирование в буфер доступно без явных разрешений в расширениях и собственных скриптах браузера, но только в обработчиках событий, инициированных пользователем. Расширения с разрешением clipboardWrite могут копировать в буфер в произвольный момент, без привязки к действиям пользователя.

    Ранее для копирования текста приходилось использовать обобщённый метод document.execCommand() с предварительным временным переопределением обрабочика события копирования или созданием невидимого текстового поля с нужным текстом и выделением его содержимого перед вызовом команды Copy. Из-за этого в частности копирование не работало в фоновых (background-) скриптах расширений, которые исполняются не в контексте веб-страницы.

    В расширениях на основе XUL/XPCOM прямое копирование текста в буфер обмена было возможно с помощью метода nsIClipboardHelper.copyString(). После перехода на WebExtensions API столь же удобный способ копирования текста в буфер обмена до текущего момента отсутствовал.

  • Дополнена поддержка Web Animations API:

  • Поддержка метода Element.toggleAttribute(), добавляющего булев (без значения) атрибут при его отсутствии, и удаляющего — при наличии. Необязательный второй аргумент может содержать булево значение, на основании которого атрибут будет добавлен или удалён вне зависимости от его наличия. Метод работает аналогично методу DOMTokenList.toggle(), используемому для управления, например, списком классов элемента element.classList.
  • Поддержка метода Object.fromEntries(), создающего объект из итерируемого (iterable) набора пар имя : значение — например, из иерархии вложенных массивов (Array).
  • Устранена ошибка, из-за которой относящиеся к фокусу события при взаимодействии с элементами не генерировались при неактивном окне Firefox.
  • Для единообразия с браузерами Edge и Chrome свойство navigator.platform в Firefox теперь возвращает значение Win32 даже при работе на 64-битных версиях Windows.

CSS, HTML

  • Новые возможности Media Queries:
    • Поддержка синтаксиса Media Queries Level 4. Сюда входит долгожданная возможность указания диапазонов, не включающих пограничное значение (width < 600px).

      Благодаря этому теперь возможно создание смежных диапазонов, прилегающих друг к другу без зазоров. С прежним синтаксисом на основе префиксов min-/max- пограничное значение всегда включалось в диапазон:

      например, max-width: 600px эквивалентно width <= 600px, и для исключения зазоров приходилось использовать вложенные диапазоны с последующим вынужденным переопределением ненужных правил, унаследованных от родительского диапазона.

      Обновлено (): В Chrome эта функциональность доступна начиная с версии 104, вышедшей спустя 4 года.

    • Снова включена поддержка свойств с префиксом webkit-, соответствующих плотности точек, в Media Queries. Изначально её реализовали в Firefox 45, но из-за несовместимости с Google Docs временно отключили в Firefox 46.
    • Поддержка свойства prefers-reduced-motion в условиях Media Queries в Windows и macOS. Соответствует параметру в системных настройках доступности, с помощью которого пользователь может явным образом указать на своё желание минимизировать количество анимаций. Это может иметь смысл для пользователей с вестибулярными нарушениями.
  • Новинки Flexbox:
    • Поддержка свойств с говорящими названиями row-gap, column-gap и gap.
    • Поддержка новых значений свойств align-self, align-content, align-items, justify-content:

      • justify-content: left, right, baseline, last baseline;
      • align-items / align-self: left, right, self-start, self-end, baseline, last baseline;
      • значения start и end, отличающиеся от flex-start и flex-end зависимостью от порядка строк и столбцов (row-reverse, column-reverse, wrap-reverse).
    • Поддержка значений safe и unsafe в свойствах align-self, align-content, and justify-content:

      • значение safe трактуется как start, если размер элемента превышает размер контейнера, относительно которого он выравнивается;
      • значение unsafe выравнивает элемент заданным образом вне зависимости от его размера.
  • Поддержка псевдокласса :defined, соответствующего элементам, поддержка которых встроена в браузер, а также нестандартным (custom-) элементам. Может быть полезно, например, для временного скрытия нестандатных элементов до тех пор, пока не отработает связанный с ними JS-код.
  • Поддержка функции path() в значении свойства offset-path, задающего траекторию движения анимированного элемента.
  • Свойства семейства offset- переименованы в inset-block-start, inset-block-end, inset-inline-start, inset-inline-end. Свойства offset-* работали только в Firefox, поэтому их поддержка не сохранена.
  • Поддержка зависящих от направ­ления потока значений block и inline свойства resize, позволяющего управлять возможностью изменения размеров элементов пользователем.
  • Логические свойства, зависящие от направления потока, в ряде случаев теперь можно анимировать.
  • Поддержка атрибута decoding элементов IMG и одноимённого DOM-свойства объектов HTMLImageElement (Image). Атрибут и свойство сообщают браузеру предпочтительный способ декодирования изображения: синхронный (sync) или асинхронный (async). Значение по умолчанию — auto, при котором браузер выбирает стратегию декодирования самостоятельно.

Прочее

  • Поддержка HTTP-заголовка ответа сервера Clear-Site-Data, позволяющего серверу запросить у браузера удаление всех связанных с сайтом данных (значение заголовка "*") или данных определённого типа ("cache", "cookies", "storage", "executionContexts").
  • Работа с favicon-пиктограммами теперь соответствует политике безопасности Content Security Policy, если таковая определена сайтом.
  • Поддержка MIME-типа application/json как псевдонима application/x-suggestions+json в плагинах OpenSearch.
  • Устранено ограничение, из-за которого в расширениях на основе WebExtensions API было невозможно использовать сочетания клавиш с одновременным нажатием клавиш-модификаторов Ctrl и Alt.

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