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.
См. также официальные примечания к выпуску и информацию для разработчиков.