Доступен выпуск Firefox 50.
Общие изменения
- Поиск по странице теперь поддерживает режим поиска с совпадением слов целиком.
- Реализована возможность использовать Ctrl+Tab для цикличного переключения вкладок в порядке последнего обращения к ним.
- Многопроцессный режим включён для всех пользователей, у которых отсутствуют несовместимые с ним дополнения.
- Добавлены эмодзи для использования в операционных системах, в которых отсутствует системный шрифт с поддержкой эмодзи (GNU/Linux, Windows 8 и более старых).
- Добавлено системное дополнение Application Update Service Helper, позволяющее исходя из параметров устройства запрещать браузеру обновляться до конкретной версии. Например, если становится известно, что очередное минорное обновление вызывает проблемы на определённой аппаратной конфигурации, можно вместе со списками отозванных сертификатов и прочими сведениями, которые Firefox периодически скачивает с серверов Mozilla, отправить таким проблемным устройствам указание пропустить эту версию.
- Режим чтения теперь может быть вызван комбинацией клавиш «Ctrl+Alt+R».
- Ускорен запуск браузера посредством оптимизации обработки SDK дополнений кода на JS. Ускорение может достигать 35% (без установленных дополнений) и более (с дополнениями).
- Запрещено использование устаревших версий libavcodec (старее 54.35.1).
- Проведена локализация на язык гуарани.
Безопасность
- Реализована защита от загрузки различных типов исполняемых файлов для Windows, macOS и Linux (список удалённых и новых настроек, связанных с safebrowsing).
- Минимальный размер ключа увеличен до 1023 бит для TLS-хендшейков, использующих схему обмена ключами Диффи — Хеллмана.
- Корневой сертификат Let's Encrypt принят в список доверия.
- Из TorBrowser перенесены некоторые ограничения по идентификации пользователей со стороны веб-сайтов, например запрет перебора плагинов и mime-типов, удаление «Открыть с помощью» из диалога загрузки файлов, запрет вывода данных о параметрах экрана через
screen.orientation
. Для включения этих ограничений следует установить настройкамprivacy.resistFingerprinting
иbrowser.download.forbid_open_with
значениеtrue
. - Атрибут ping элемента
<a>
теперь учитывает директиву CSP 1.1 connect-src (1100181). - Добавлена CSP-директива sandbox (671389).
- Воркеры теперь поддерживают CSP (959388).
- Метод Navigator.sendBeacon() больше не выбрасывает исключение, если передача данных запрещена CSP. Вместо этого он вернёт
false
(1234813).
Инструменты разработчика
- Веб-консоль обзавелась поддержкой Source Map (сопоставление кода на JS с исходными файлами, из которых он сформирован).
- Инспектор хранилища теперь позволяет удалять отдельные элементы IndexedDB.
- Включён инструмент инспектирования потребления памяти.
- Просмотр блоковой модели перенесён в раздел «Вычислено».
- Веб-консоль теперь показывает стек трассировки сетевых запросов XHR или Fetch().
- Реализована подсветка синтаксиса при отладке WebAssembly.
HTML
- Стиль по умолчанию элемента <bdo> теперь определён как unicode-bidi, имеющий значение
isolate-override
(1249497). - Установка атрибута src элементу <track> теперь работает корректно (1281418).
- Включена поддержка атрибута
referrerpolicy
у элементов<area>
,<a>
,<img>
,<iframe>
и<link>
(1223838, 1264165).
CSS
- Углы, использующие
border-radius
с пунктирными или точечными стилями, теперь отображаются корректно, а не сплошной линией (382721). - Прекращена поддержка нестандартных псевдоклассов :-moz-full-screen-ancestor (1199529).
- Прекращена поддержка свойства box-sizing: padding-box, поскольку оно удалено из спецификации. Его не поддерживал ни один из основных браузеров, кроме Firefox (1166728).
- Убран префикс у значений
isolate
,isolate-override
иplaintext
свойства unicode-bidi (1141895). - Маркер элемента списка в режиме совместимости теперь наследует размер списка, как и в обычном режиме (648331).
- Изменено поведение псевдоклассов :in-range и :out-of-range, чтобы они не соответствовали отключённым или недоступным для ввода полям (1264157).
- Убран префикс у псевдокласса :any-link (843579).
- Реализовано значение
space
у свойства border-image-repeat (720531).
JavaScript
- Реализовано свойство Symbol.hasInstance (ES2015) (1054906).
- Реализован метод Object.getOwnPropertyDescriptors() (ES2017) (1245024).
- Изменено поведение
\W
в RegExp с флагамиunicode
иignoreCase
. Теперь он не соответствует K, S, k, s, KELVIN SIGN (U+212A) и LATIN SMALL LETTER LONG S (U+017F) (1281739).
HTTP
- Отключена экспериментальная (и устаревшая) поддержка SPDY 3.1 (1287132).
- Реализована поддержка X-Content-Type-Options (471020).
- Добавлена поддержка префиксов Cookie
__Host-
и__Secure-
. Подробности: Set-Cookie и 1283368. - Добавлен заголовок Referrer-Policy (1264164).
Сеть
- При ошибке во время асинхронного XMLHttpRequest метод XMLHttpRequest.getAllResponseHeaders() отныне вернёт пустую строку (1286744).
- Асинхронный
XMLHttpRequest
, который не выполнился из-за CORS или других ограничений, вместоNetworkError
теперь вернёт error (709991). - XMLHttpRequest.getResponseHeader() и XMLHttpRequest.getAllResponseHeaders() по умолчанию возвращают пустые заголовки. Это поведение управляется настройкой
network.http.keep_empty_response_headers_as_empty_string
(918721). - В Request.cache добавлена опция
only-if-cached
(1272436).
DOM
- В EventTarget.addEventListener() добавлена опция
once
(1287706). - Интерфейс NodeList стал итерируемым; доступны методы forEach(), values(), NodeList.entries() и NodeList.keys() (1290636).
- Интерфейс DOMTokenList стал итерируемым; доступны методы forEach(), values(), DOMTokenList.entries() и DOMTokenList.keys() (1290636).
- Методы Document.createElement() и Document.createElementNS() обзавелись необязательным параметром
options
для создания пользовательских элементов (1276579).
SVG
- Удалён атрибут
allowReorder
. Поведение, которое он устанавливал, теперь является поведением по умолчанию для SVG <switch> elements (1279690). - В соответствии со спецификацией SVG2 удалена поддержка ключевого слова «defer» для атрибута preserveAspectRatio элементов <image> (1280425).
Drag and Drop API
- Реализовано свойство DataTransfer.items, дающее доступ к нескольким перетаскиваемым элементам. Также поддерживаются интерфейсы DataTransferItem и DataTransferItemList (906420).
- Удалены устаревшие, специфичные для Firefox события «dragdrop» и «draggesture» (1162050).
Pointer Lock API
- Удалён префикс у Pointer Lock API (991899).
- requestPointerLock() больше не запрашивает подтверждение у пользователя, а действует наподобие fullscreen API: пользователь получает лишь уведомление о том, как выйти из этого режима (1273351).
IndexedDB
- Событие close теперь отправляется в объект IDBDatabase, когда соответствующая база внезапно закрывается (1151017).
Сервисные воркеры
- Добавлен метод WindowClient.navigate(), позволяющий открыть указанный адрес в клиентском окне, которое контролируется воркером (1218148).
WebGL
- Добавлено расширение EXT_shader_texture_lod (1111689).
- Методы
texImage
WebGL 2 получили поддержку PBO (PIXEL_UNPACK_BUFFER
) (1280499).
WebRTC
- Добавление дорожки в MediaStream теперь создаёт событие addtrack. Оно возникает на том потоке, в который была добавлена дорожка. Для обработки события можно использовать MediaStream.addEventListener('addtrack', ...) или свойство MediaStream.onaddtrack.
- Интерфейс MediaStreamTrack теперь поддерживает событие ended и обработчик MediaStreamTrack.onended.
- Добавлено свойство MediaStreamTrack.readyState, показывающее, жива ли ещё дорожка или окончательно завершена.
- Добавлены методы getConstraints() и getSettings().
- Удалено свойство RTCDataChannel.stream. Оно давно заменено на RTCDataChannel.id, но сохранялось для обратной совместимости.
Web Audio API
- Интерфейс PannerNode теперь поддерживает свойства трёхмерного декартова пространства для расположенности (
PannerNode.positionX
,PannerNode.positionY
,PannerNode.positionZ
) и направленности (PannerNode.orientationX
,PannerNode.orientationY
,PannerNode.orientationZ
) источника звука. - Добавлен интерфейс IIRFilterNode с реализацией общего фильтра infinite impulse response (IIR).
- Приостановка в фоновых вкладках таймеров, созданных Window.setInterval() и Window.setTimeout() больше не происходит, если Web Audio API AudioContext активно воспроизводит звук. Это должно предотвратить проблемы с фоновым воспроизведением, завязанным на тайминги (например, с музыкальными плеерами, генерирующими отдельные ноты с помощью таймеров) (1181073).
Audio/Video
- Исправлено поведение, при котором перечисление AlignSetting (представляющее возможные значения
VTTCue.align
) ошибочно включало значениеmiddle
вместоcenter
(1276130). - Нестандартный экспериментальный метод HTMLMediaElement.seekToNextFrame() теперь сначала пытается искать следующий фрейм асинхронно, а только потом синхронно; также он возвращает Promise.
- Исправлена реализация HTMLTrackElement: элементы
<track>
теперь могут загружать ресурсы за пределами документов (871747).
Battery API
- Удалено устаревшее свойство navigator.battery. Вместо него следует использовать метод navigator.getBattery() (12593355).
File and Directory Entries API
- Для улучшения совместимости с сайтами, которые ранее были совместимы лишь с Google Chrome, добавлен набор File and Directory Entries API(1265767).
- Реализованы асинхронные интерфейсы API с оговоркой, что поддерживается только чтение файлов: например, метод FileSystemFileEntry.createWriter() не делает ничего.
- Реализованы интерфейсы: FileSystem, FileSystemEntry (только свойства, методы не реализованы), FileSystemFileEntry (за исключением
createWriter()
), FileSystemDirectoryEntry (за исключениемremoveRecursively()
), FileSystemDirectoryReader. - Добавлена поддержка HTMLInputElement.webkitdirectory и атрибута webkitdirectory элементу
<input>
; позволяет выбирать лишь директории, а не файлы (1258489). - Добавлено свойство HTMLInputElement.webkitEntries, возвращающее массив объектов FileSystemEntry, представляющих собой выбранные элементы.
- Добавлено свойство File.webkitRelativePath, содержащее путь к файлу относительно корня FileSystemDirectoryEntry, который был в списке, возвращаемом
HTMLInputElement.webkitGetEntries()
. - Подробности о том, что поддерживается и не поддерживается этим API (1288683).
- Добавлена функция DataTransferItem.webkitGetAsEntry(), позволяющая получить FileSystemEntry, т. е. перенесённый файл (1289255).
- Свойство
HTMLInputElement.directory
, входящее в предлагаемый стандарт Directory Upload API, переименовано вallowdirs
(1288681).
Обзор новостей
- Mozilla значительно улучшит производительность Firefox новым движком Quantum.
- Mozilla прекращает работу над Firefox OS и передаёт исходный код open source-сообществу.
- Проект Mozilla представил три новые экспериментальные возможности для Firefox.
- Chrome, Firefox и Edge перешли на новый этап тестирования технологии WebAssembly.
- Инициатива Mozilla по переносу PDFium и части Pepper API из Chromium в Firefox.
>>> Подробности