Firefox 65
- Опубликовано:
Firefox 65 — юбилейный и первый в 2019 году выпуск свободного веб-браузера.
Медиаформаты AV1 и WebP
- Поддержка новейшего открытого видеоформата AV1 в Windows-версии Firefox. По характеристикам AV1 не уступает коммерческому H.265 (HEVC) и при этом не требует лицензионных отчислений. Формат разработала организация AOMedia, куда вошли в том числе компании Mozilla, Google, Cisco, Amazon, Netflix, AMD, ARM, Intel и nVidia.
-
Поддержка графического формата WebP, разработанного компанией Google и основанного на алгоритме кодирования ключевых кадров в видеоформате VP8. Параллельно соответствующий MIME-тип
image/webp
добавлен в HTTP-заголовок запросаAccept
, сообщающий серверу типы поддерживаемых браузером файлов.Формат WebP поддерживает оба типа сжатия: без потерь (как PNG) и с потерями (как JPEG), но обеспечивает более высокую степень сжатия и при этом поддерживает полупрозрачность в обоих режимах. И если чистая степень сжатия в равных условиях по сравнению с прежними форматами улучшена лишь на 25%, то поддержка полупрозрачности совместно с JPEG-подобным сжатием даёт многократный выигрыш в скорости загрузки полупрозрачных изображений по сравнению с PNG без необходимости использовать такие ограниченные и кропотливые обходные манёвры, как SVG- или CSS-маски.
CSS, HTML
-
Значение
crisp-edges
CSS-свойстваimage-rendering
теперь доступно без префикса. Свойство предназначено для управления способом масштабирования изображений. Смысл значенияcrisp-edges
в спецификации описан довольно расплывчато — как призванный сохранять контрастность и контуры без сглаживания или размытия, но в Firefox при его использовании применяется алгоритм «По соседним» («Ближайший сосед», Nearest Neighbour).Именно
image-rendering: crisp-edges
используется в авторском расширении SmartUpscale, предотвращающем размытие изображений, отмасштабированных с целочисленным коэффициентом, и особенно полезном для владельцев 4K-мониторов, использующих их при системном масштабе 200%. - Поддержка новых свойств
break-before
,break-after
,break-inside
. В отличие от ранее существовавших свойствpage-break-*
, предназначавшихся только для управления разрывами страниц, свойстваbreak-*
также позволяют управлять разрывами колонок (columns) и регионов (regions). Свойстваpage-break-*
теперь функционально идентичны соответствующим свойствамbreak-*
и являются их псевдонимами (aliases). - Поддержка значения
anywhere
свойстваoverflow-wrap
. Значениеanywhere
аналогично значениюbreak-word
с той разницей, что вносимая первым возможность переноса текста учитывается при расчёте минимальной возможной ширины текстового содержимого элемента (min-content intrinsic size).overflow-wrap
— стандартизированный вариант нестандартного свойстваword-wrap
, изначально реализованного в браузере Internet Explorer и теперь являющегося псевдонимомoverflow-wrap
. - Поддержка новых значений
jump-start
,jump-end
,jump-none
иjump-both
для управления пошаговыми (ступенчатыми) анимациями и переходами (transitions) с помощью функцииsteps()
. Одновременно удалена поддержка функцииframes()
, предназначавшейся для аналогичной цели ранее. -
Поддержка дополнительных значений префиксированного свойства
-webkit-appearance
для улучшенной совместимости с другими браузерами:meter
как псевдоним ранее существовавшего специфичного для Firefox значенияmeterbar
;progress-bar
как псевдонимprogressbar
;textarea
как псевдонимtextfield-multiline
.
Эти значения теперь также используются по умолчанию в собственных таблицах стилей Firefox для элементов
METER
,PROGRESS
иTEXTAREA
соответственно. -
Поведение свойства
user-select
изменено для совместимости с другими браузерами:user-select: all
теперь не переопределяет значения свойстваuser-select
вложенных элементов;- теперь возможно выделение в элементах, для которых отключено визуальное редактирование (
contenteditable
), вложенных в визуально-редактируемые элементы; user-select
теперь работает единообразно внутри и за пределами Shadow DOM;- удалена поддержка нестандартных значений
-moz-all
,-moz-text
,tri-state
,element
,elements
иtoggle
.
- Поддержка новой функции
env()
. В качестве аргумента функции поддерживаются значенияsafe-area-inset-top
,safe-area-inset-right
,safe-area-inset-bottom
иsafe-area-inset-left
, соответствующие координатам прямоугольной области, которая гарантированно не будет перекрыта или усечена вследствие возможной непрямоугольной формы экрана. В качестве второго аргумента функции можно указать fallback-значение, которое будет использоваться при отсутствии поддержки браузером ключевого слова из первого аргумента. Функциюenv()
можно использовать там же, где допустимо использование функцииvar()
. - Поддержка атрибута
referrerpolicy
и DOM-свойстваreferrerPolicy
элементаSCRIPT
для управления отправкой HTTP-заголовка запросаReferer
при загрузке файла скрипта.
JavaScript, DOM
- Некоторые события мыши, такие как
mouseover
,mouseenter
,mousemove
,mouseout
иmouseleave
, теперь работают на элементах форм, отключённых с помощью атрибутаdisabled
. - Удаление атрибута
src
элементаIFRAME
теперь приводит к загрузке во фрейм пустой страницы с псевдо-URL-адресомabout:blank
. Это соответствует поведению браузеров Chrome и Safari. Ранее удаление атрибутаsrc
в Firefox на содержимое фрейма не влияло. - Поддержка конструктора объектов
Intl.RelativeTimeFormat
, предназначенного для генерации локализованного строкового представления дат в относительном формате. Например,1 день назад
. - Поддержка универсального глобального объекта
globalThis
, в браузерных реализациях JavaScript соответствующего объектуwindow
. Это призвано упростить обеспечение возможности исполнения одного и того же JS-кода в разных контекстах — например, не только в браузере, но и в среде Node.js, где глобальный объект —global
. - Функция
createImageBitmap()
теперь поддерживает векторные изображения SVG. Функция служит для создания растровых изображений в представлении, дающем возможность быстрой отрисовки средствами элементаCANVAS
. - Максимальный размер JS-строк теперь составляет около 1 ГБ (
2**30 - 2
) вместо прежних 256 МБ (2**28 - 1
). -
Экспериментальная поддержка программного интерфейса (API) Storage Access, дающего возможность встроенным с помощью фреймов ресурсам запрашивать у пользователя возможность сохранять локальные данные. API включает два метода
hasStorageAccess()
иrequestStorageAccess()
объектаdocument
и новое разрешениеallow-storage-access-by-user-activation
в атрибутеsandbox
элементаIFRAME
.В зависимости от реализации решение о предоставлении доступа к хранению данных браузер принимает либо с помощью явного запроса при взаимодействии пользователя с документом во фрейме, либо автоматически на основании прямого посещения пользователем соответствующего ресурса за определённый предшествующий период. Функциональность в Firefox по умолчанию выключена, включить можно с помощью параметра
dom.storage_access.enabled
на странице скрытых настроек, доступной по псевдо-URL-адресуabout:config
.Идею изначально предложил Джон Уайландер (John Wilander) из команды разработки движка WebKit, используемого в браузере Apple Safari.
Разработка
- Flexbox Inspector — новый инструмент визуализации габаритов элементов при использовании механизма взаимного расположения элементов Flexbox. Включается наведением/
щелчком по кнопке flex
справа от открывающего тега элемента в панели DOM-дерева в панели «Инспектор» инструментов разработчика либо щелчком по пиктограмме слева от значенияflex
илиinline-flex
свойстваdisplay
в списке CSS-правил. - Изменения стилей, внесённые с помощью инструментов разработчика, теперь отображаются на вкладке «Изменения» в виде, подобном используемому в системах управления версиями (VCS, SCM) типа Mercurial или Git.
- Диспетчер задач Firefox, доступный по псевдо-URL-адресу
about:performance
, теперь показывает потребление памяти и процессорных ресурсов отдельными вкладками. К сожалению, первая строка таблицы пока загорожена фиксированной «шапкой».
Прочее
- Возможность изменить язык интерфейса Firefox в настройках браузера без необходимости использовать отдельный локализованный дистрибутив. Это упрощает, например, проверку правильности локализации авторских расширений. В локализованных версиях Firefox по умолчанию доступны два языка — американский английский и соответствующий языку локализации браузера; другие языковые пакеты можно скачать и установить непосредственно из окна настроек. Для применения выбранного языка интерфейса требуется перезапуск браузера.