Доступен выпуск Firefox 61. Тем временем, доля Firefox среди браузеров упала ниже 10%.
- Распараллелен парсинг стилей (до этого параллельным было лишь вычисление стилей). Кроме того, Firefox теперь не перестраивает заново весь список отображаемых элементов, если изменилась лишь небольшая часть страницы. Это позволяет снизить потери кадров на величину до 40%.
- Ускорен переход между вкладками. Уже при наведении курсора на вкладку, браузер отрисовывает её в буфер.
- В меню действий (многоточие в адресной строке) появилась возможность добавить текущий сайт в качестве поисковой системы (при условии, что сайт поддерживает стандарт OpenSearch).
- HTML-страницам запрещено подгружать дочерние ресурсы по протоколу FTP. Это не затрагивает поддержку FTP в целом, однако, разработчики не исключают полного прекращения поддержки FTP когда-нибудь в будущем.
- При включении тёмной темы браузера тёмными теперь становятся также домашняя страница, главное меню, меню закладок и меню журнала.
- Дополнения WebExtensions получили возможность скрывать вкладки.
- Улучшена синхронизация закладок.
- В настройках появился новый раздел «Начало», где можно настроить внешний вид домашней страницы.
- Появилась возможность использовать отдельный контейнер при создании превьюшек.
- Шрифт EmojiOne, начиная с версии 3.0, не разрешает использование в коммерческих целях, поэтому он заменён на Twemoji.
- Некоторые пользователи (преимущественно с английской локалью) получат экспериментальное дополнение Firefox Monitor. Оно позволяет проверить почтовый адрес пользователя по базе скомпрометированных адресов и получать уведомления, если адрес окажется скомпрометирован в будущем. Используется k-анонимизация — математически обоснованный способ анонимизации — при котором вместо адреса на сервер отправляются 6 первых символов хэша SHA-1. В ответ сервер отправляет полные хэши, начало которых совпадает с присланным значением. Firefox локально сверяет присланные хэши с ранее вычисленным полным хэшем и уведомляет пользователя в случае совпадения. Таким образом, серверу не раскрывается адрес эл. почты пользователя.
- Окончательно удалена поддержка файлов JAR. Единственным известным приложением, которому это требовалось, было IBM iNotes, но и его переписали два года назад.
- В macOS дополнения теперь выполняются в отдельном процессе.
- Пользователи macOS теперь могут поделиться адресом текущей вкладки с помощью значка «многоточие» в адресной строке.
Инструменты разработчика:
- Представлен инструмент для проверки поддержки доступности страницы людям с ограниченными возможностями.
- Переписан интерфейс консоли браузера (1362023, 1347127). Старый интерфейс удалён.
- Выбор пункта «Открыть в новой вкладке» для POST-запроса в сетевом мониторе теперь корректно отправляет запрос с ожидаемыми параметрами POST (1407515).
- Подсказки автозавершения CSS-переменных теперь содержат цветовой маркер, позволяя видеть, какой цвет содержится в той или иной переменной (1451211). Кроме того, при наведении на переменную появляется подсказка о том, какой цвет соответствует переменной (1431949).
- Переработаны инструменты разработчика. Теперь они лучше выглядит на широких экранах, некоторые кнопки убраны в выпадающее меню, а вкладки инструментов можно менять местами, перетаскивая мышью (1226272).
- На панель сетевого монитора добавлено меню с пунктами «Копировать всё как HAR», «Сохранить всё как HAR» и «Импорт...» (1403530).
- Боковая панель сетевого монитора обзавелась вкладкой «Кэш», отображающей сведения о кэшированных ресурсах (859051).
- Панель инструментов сетевого монитора стала лучше выглядеть на небольших экранах и внешне более схожей с консолью.
- На панель сетевого монитора добавлено меню, позволяющее задать ограничение скорости сетевого соединения (1349559).
- Консоль браузера по умолчанию не показывает ошибки CSS, потому что это ухудшает производительность (1452143).
- Добавлены новые API WebExtensions: devtools.network.onRequestFinished (1311171) и devtools.network.getHAR (1311177).
- Удалена цветовая тема «Firebug». Она помогала людям, привыкшим к Firebug, адаптироваться к инструментам разработчика Firefox, и выполнила задачу. К тому же, тема создана ещё во времена Australis, поэтому выглядела устаревшей в сравнении с нынешним дизайном Firefox (1378108).
- Сочетание клавиш Cmd/Ctrl+Shift+O больше не открывает/закрывает настройки. Вместо этого следует использовать F1 (1409456).
CSS:
- Свойства
grid-gap
,grid-row-gap
иgrid-column-gap
переименованы в gap, row-gap и column-gap, поскольку больше не являются grid-специфичными (1398482). См. подробности. Старые названия сохранены для обратной совместимости. - Реализована поддержка значения
content
flex-basis (1105111). - Многоколоночная вёрстка теперь поддерживает процентные значения column-gap (1398537).
- Реализована поддержка псевдокласса :host (992245).
- overflow теперь поддерживает два значения (1453148).
- Размер гибких элементов, у которых он задаётся содержимым, теперь задаётся с помощью
max-content
, а неfit-content
(1374540). См. подробности. - Начальное значение justify-items переименовано из
auto
вlegacy
(1363875). - font-weight, font-stretch и font-style теперь поддерживают дополнительные значения, определённые спецификацией CSS Fonts level 4 (1436048):
- font-weight принимает значения с плавающей запятой между 1 и 1000 включительно.
- font-stretch принимает значения в процентах.
- font-style принимает угол после ключевого слова
oblique
.
- Из-за проблем с безопасностью отключена поддержка
@-moz-document
(1422245).
SVG:
- Элемент <a> (SVGAElement)
ping
,rel
,referrerPolicy
,relList
,hreflang
,type
иtext
, чтобы быть схожим с HTML-тегом <a> (1451823). - Элемент <textPath>] (SVGTextPathElement) обзавёлся поддержкой SVG2-атрибутов
path
иside
(1446617, 1446650). - Интерфейс SVGGeometryElement теперь поддерживается для большего числа элементов, а не только для <path> (1325320).
- Удалено устаревшее (так и не реализованное правильно) свойство SVGViewElement.viewTarget (1455763).
- Удалены устаревшие свойства SVGSVGElement:
pixelUnitToMillimeterX
,pixelUnitToMillimeterY
,screenPixelToMillimeterX
иscreenPixelToMillimeterY
(1133172). - Удалён нестандартный конструктор
SVGNumber()
(1455940).
JavaScript:
- Реализованы методы String.prototype.trimStart() и String.prototype.trimEnd() (1434007).
trimLeft
иtrimRight
оставлены в качестве синонимов, чтобы не ломать существующие сайты.
API:
- Новые API:
- Реализован PerformanceServerTiming API. Он обрабатывает данные, посылаемые с помощью заголовка Server-Timing (1423495).
- В macOS включена поддержка WebVR API (1244242).
- DOM:
- Свойства anchors, applets, embeds, forms, head, images, links, plugins и scripts перемещены из интерфейса HTMLDocument в Document (1415588).
- DOMTokenList.replace() отныне возвращает не void, а логическое значение, показывающее, успешно ли выполнена замена (1444909).
- Свойство Request.credentials теперь по умолчанию «same-origin» (1394399).
- Реализовано свойство Request.destination (1402892).
- Ни одно логическое свойство MutationObserverInit больше не
false
по умолчанию. ТолькоchildList
иsubtree
имеют значения по умолчанию, у остальных свойств значений по умолчанию нет (973638). - Метод PaymentRequest.show() позволяет использовать Promise, чтобы код клиентской стороны предоставил обновлённые данные о платеже до активации интерфейса платежа (1441709).
- Сервисные воркеры: кнопка «Забыть» (которую можно найти в режиме персонализации) теперь также очищает сервисные воркеры и их кэш (1252998).
- Звук, медиа и WebRTC:
- Конструктор AudioContext() теперь принимает необязательный параметр
options
типа AudioContextOptions. Позволяет настроить желаемую задержку и/или частоту дискретизации для нового контекста. - Теперь выбрасывается правильное исключение при неудачном инстанцировании AudioBuffer.
- Конструктор AudioContext() теперь принимает необязательный параметр
- CSSOM:
- После 18 лет разработки полностью реализовано свойство CSSStyleRule.selectorText (37468).
- Интерфейс MediaList стал ближе к спецификации. Но не до конца: например, не реализованы атрибуты stringifier (1455807).
- События online и offline перемещены от document.body к window (1457166).
- Удалено свойство lastModifiedDate (1458883).
- Удалены методы Node.getUserData() и Node.setUserData() (749981).
- Удалён метод Element.createShadowRoot(). Вместо него следует использовать Element.attachShadow() (1453789).
- Запрещено перегружать MediaStream у createObjectURL() (1454889).
HTTP:
- Появилась поддержка директивы
SameSite
для кук (795346).
>>> Подробности