Firefox 59
- Опубликовано:
Firefox 59 — первый весенний выпуск современного веб-браузера.
HTML, CSS
- Обновлена в соответствии с текущей спецификацией интерпретация CSS-объявления
display: contents
для элементов, отрисовываемых особым образом, в том числе изображений и элементов форм. В частности, для элементов без текстового содержимого, таких как элементы форм, изображения, элементыAUDIO
,VIDEO
иBR
, значениеdisplay: contents
эквивалентно их скрытию с помощьюdisplay: none
. ДляLEGEND
при этом отключается особое оформление, а значит уходит в прошлое головная боль, которая многие годы была связана с кроссбраузерной реализацией нестандартного оформления этого элемента. - Поддержка атрибута
autocomplete
элементовTEXTAREA
. Значениеon
атрибута даёт браузеру возможность предлагать значения на основании данных, введённых пользователем в аналогичные поля ранее. Если атрибут не указан, его значение наследуется из формы, к которой относится элемент. - Поддержка нового стенографического CSS-свойства
overscroll-behavior
и его дочерних свойств для отдельных осейoverscroll-behavior-x
иoverscroll-behavior-y
. Свойства ориентированы главным образом на мобильные устройства и позволяют управлять поведением браузера при достижении границы прокручиваемой области элемента или страницы, в том числе с помощью значенияcontain
предотвращать прокрутку родительского элемента при окончании прокрутки дочернего и с помощью значенияnone
предотвращать перезагрузку страницы при достижении крайнего верхнего положения прокрутки страницы. - Поддержка объявления position: sticky для ячеек таблиц. Объявление позволяет «приклеивать» элемент к определённому месту прокручиваемой области.
- Поддержка CSS-функции
calc()
, предназначенной для математических вычислений в смешанных единицах измерения, внутри цветовых функцийrgb()
,rgba()
,hsl()
иhsla()
. - Поддержка CSS-функции
calc()
в условиях Media Queries. Технически была возможна ещё при переходе на написанный на языке Rust новый CSS-движок Stylo в Firefox 57, но её на всякий случай временно отключили из-за отсутствия поддержки в других браузерах. - Поддержка CSS-свойства
font-optical-sizing
. Значениеnone
свойства позволяет отключить автоматическую подстройку отрисовки символов, которую по умолчанию (значениеauto
) может осуществлять браузер — например, утолщение штрихов и увеличение засечек при малых размерах шрифта для улучшения разборчивости символов.
JavaScript, DOM
- Поддержка программного интерфейса (API) Pointer Events — унифицированного механизма обработки событий мыши, сенсорного экрана и электронного пера. Разработку вёл Олег Ромашин из компании Microsoft, которая изначально и предложила новый механизм. Pointer Events API не имеет отношения к CSS-свойству
pointer-events
, позволяющему управлять прозрачностью элементов для событий мыши. - Новый метод
Event.composedPath()
возвращает список объектов, для которых будут вызваны обработчики данного события. В этот список не включаются узлы деревьев Shadow DOM, созданных с использованием значенияclosed
параметраShadowRoot.mode
. - Удалена поддержка очень редко (около
0,2%
) используемого параметраversion
в атрибутеtype
элементаSCRIPT
. - Поддержка интерфейса
CSSNamespaceRule
со свойствамиnamespaceURL
иprefix
, соответствующего CSS-правилам@namespace
. - Новый метод
browser.tabs.captureTab()
позволяет расширению получить в формате Data URI скриншот видимой части страницы в заданной вкладке. Работает аналогично методуbrowser.tabs.captureVisibleTab()
, предназначенному для получения скриншота активной вкладки.
Быстродействие
- Повышенная скорость загрузки кэшированных ресурсов благодаря их параллельной загрузке из сети и из кэша (алгоритм RCWN — Race Cache With Network). Может быть полезно для пользователей быстрых интернет-каналов при хранении кэша на таких медленных носителях, как механические жёсткие диски.
- В версии Firefox для macOS отрисовка графики вынесена из основного потока исполнения (Off-Main-Thread Painting), что даёт выигрыш в быстродействии браузерных игр до 30%. В Firefox для Windows эта функциональность реализована начиная с предыдущей версии 58.
Безопасность
- Теперь блокируются переходы на псевдоадреса Data URI средствами JavaScript, вследствие перенаправлений (редиректов) или открытия ссылок из сторонних программ. Псевдоадреса Data URI не являются обычными адресами, а непосредственно содержат в закодированном виде содержимое ресурса — например, изображения или HTML-файла. Это могло использоваться для имитации знакомых пользователю сайтов с целью похищения конфиденциальных данных.
- В Nightly- и ранних бета-версиях: возможность использования CSS-правила
@-moz-document
теперь из соображений безопасности отключена для веб-страниц и ограничена дополнениями и собственным кодом Firefox. Это исключает так называемые CSS-инъекции (CSS injections), или бесскриптовые атаки, которые могли приводить к утечкам на сторонние сайты секретных данных, содержащихся в URL-адресе — таких как идентификатор сессии или OAuth-ключ. - Значение
SAMEORIGIN
заголовка ответа сервераX-Frame-Options
теперь применяется не только к самому документу, но и к документам, загружаемым через содержащиеся в нём фреймы (элементыIFRAME
). ЗначениеSAMEORIGIN
позволяет загружать ресурс внутрь фреймов только на страницах этого же сайта. - В приватных окнах из значения заголовка запроса
Referer
теперь удаляется путь к конкретной странице с целью затруднения отслеживания переходов пользователя между разными сайтами. - Изображения со сторонних сайтов теперь не могут запрашивать ввод данных HTTP-аутентификации. Это могло использоваться для похищения паролей пользователей ресурсов, где разрешена вставка изображений со сторонних сайтов.
Прочее
- Новый параметр
page_action
→show_matches
в манифесте расширения позволяет расширению отображать кнопку типаpageAction
по умолчанию для страниц, адреса которых соответствуют заданной маске. Параметрhide_matches
позволяет задать маску для страниц-исключений. Ранее отобразить такую кнопку, в отличие отbrowserAction
, можно было только явным вызовом методаbrowser.pageAction.show()
. - Имя пользователя и пароль в рамках HTTP-аутентификации теперь передаются на сервер в кодировке UTF-8 вместо ISO-8859-1 для единообразия с другими реализациями, в том числе браузером Chrome, утилитой cURL и веб-сервером nginx.
См. также официальные примечания к выпуску и информацию для разработчиков.