Доступен выпуск Firefox 52.
Основные изменения:
- Удалена поддержка NPAPI-плагинов (Silverlight, Java, Unity, Gnome Shell Integration, Google Hangouts). Исключение сделано лишь для Flash. Поддержка плагинов сохранена (но отключена по умолчанию, для включения необходимо воспользоваться настройкой
plugin.load_flash_only = false
) в Firefox 52 ESR, который будет получать обновления безопасности до марта 2018 года. Кроме того, Firefox 52 и 52 ESR станут последними выпусками, поддерживающими процессоры без SSE2 (Pentium 3, Athlon XP, VIA C3), операционные системы Windows XP/Vista и 32-разрядные версии Mac OS X. Пользователи этих операционных систем будут автоматически пересажены на ESR-выпуск, чтобы не остаться без обновлений безопасности. - Если на http-странице содержится форма ввода пароля, то предупреждение о небезопасном вводе будет показано прямо возле соответствующего поля ввода, а автозаполнение будет отключено.
- Добавлена возможность отправки открытой вкладки с одного устройства на другое через синхронизацию.
- Улучшен интерфейс загрузок:
- При неудаче выводится уведомление на панель инструментов.
- Быстрый доступ к недавним загрузкам расширен с трёх до пяти элементов.
- Увеличены кнопки отмены и перезапуска загрузки.
- Реализована спецификация Strict Secure Cookies, запрещающая небезопасным (http:) сайтам установку кук с атрибутом «secure».
- Включена поддержка чернового варианта спецификации TLS 1.3 (1310516).
- Удалена поддержка Battery Status API (1313580). Предполагалось, что веб-приложения и сайты смогут при низком уровне заряда аккумулятора устройства отдавать облегчённую версию контента или экстренно сохранять данные. На практике этой возможностью пользуются лишь для отслеживания пользователей (уровень заряда служит одним из параметров, позволяющих точно идентифицировать клиента), а некоторые сервисы могут повышать расценки для пользователей, чей телефон вот-вот разрядится.
- Движок обзавёлся поддержкой WebAssembly (эффективного низкоуровневого языка программирования, выполняющегося в браузере).
- Совместный доступ к экрану теперь поддерживает предварительный просмотр и больше не требует присутствия домена в белом списке.
- Прекращена поддержка SHA-1 сертификатов, выпущенных публичными удостоверяющими центрами. Кроме того, в Firefox 52 ESR отключена поддержка сервисных воркеров и пуш-уведомлений. Эти компоненты будут подвергнуты существенным изменениям, которые невозможно было бы портировать в ESR-выпуск, получающий лишь обновления безопасности.
- Включено автоматическое обнаружение captive portal. При обнаружении сети, использующей эту технологию, браузер выдаст предупреждение и откроет страницу входа в новой вкладке.
- Сервис отложенного чтения Pocket теперь полностью принадлежит корпорации Mozilla.
- На платформе Windows улучшена совместимость со сторонними раскладками клавиатуры, не входящими в стандартную поставку Windows. Также, без объяснения причин удалена поддержка DRM-модуля Adobe Primetime CDM.
- Устранены различные уязвимости.
Инструменты разработчика:
- Переработан и улучшен режим адаптивного дизайна, получивший возможность выбора целевого устройства (разрешения, DPI) и пропускной способности сети (включая задержки).
- Отображение временных функцией в инспекторе анимации.
- Подсветка CSS-сеток в Инспекторе.
- Отображение состояние сервисных воркеров на странице about:debugging..
- Подсветка выбранного элемента в Инспекторе.
- Отображение текстовых узлов, состоящих из пробелов, в Инспекторе.
HTML:
- Реализована поддержка
rel="noopener"
(1222516).
CSS:
- Включена поддержка CSS Grid Layout.
- Добавлен псевдокласс :focus-within (1176997).
- Реализована поддержка
display:flex/grid
внутри элементов <button> (984869). - Реализована интерполяция между числовым значением цвета и currentcolor (1299741).
- Реализована поддержка гибких блоков для justify-content: space-evenly, align-content: space-evenly (1235922) и для align|justify-self:baseline|last-baseline (1221524).
- В CSS mask / clip-path добавлена поддержка субпиксельного сглаживания (1305259).
- Реализована часть спецификации CSS Text 3 — Segment Break Transformation Rules (1081858).
- Обрезка основных форм теперь может применяться к SVG-содержимому (1246741).
- CSS Animations можно использовать для анимации неинтерполируемых свойств (1064937).
- Мультиколоночные свойства избавлены от префиксов (1300895).
- Реализована часть спецификации CSS Grid Layout Module Level 1 - Grid Container Baselines (1151204).
- Из системы стилей удалена поддержка min-sizing у <flex> (1305244).
- Начальные значения mask-position и mask-repeat изменены на 0% 0% (1308963).
- Удалена поддержка медиатипов -moz-images-in-menus и -moz-images-in-buttons (1302157).
- Удалена поддержка значения -moz-use-text-color. Вместо него следует использовать currentcolor (1306214).
- Ряд изменений, связанных со значениями <color> (1295456):
- rgba() и hsla() переопределены как ссылки на rgb() и hsl().
- rgb() и hsl() принимают необязательное значение прозрачности.
- функции цвета принимают параметры, разделённые пробелами вместо запятых.
- значения прозрачности можно указывать не только в виде чисел, но и в процентах.
- оттенок в hsl() можно указывать не только в виде числа, но и в градусах.
JavaScript:
- Реализована поддержка асинхронных функций, асинхронных функций внутри выражений и ключевого слова await (1185106).
- Реализована поддержка конечных запятых в функциях (1303788).
- Реализовано деструктурирование rest-параметров (1243717).
- Включена поддержка оператора возведения в степень (**) (1291212).
- Появилась возможность использования имён временных зон IANA в опции timeZone у API, связанных с данными, наподобие DateTimeFormat или Date.toLocaleString() (837961).
- Деструктурирование массивов теперь выбрасывает SyntaxError при использовании остатка деструктурирования с конечной запятой (1041341).
- В деструктурировании объектов разрешены дублирующиеся свойства __proto__ (1204024).
- Переделан Array.prototype.toLocaleString() для поддержки параметров Intl API «locales» и «options» (1130636).
- Конструкторы TypedArray теперь принимают итерируемые объекты для создания новых типизированных массивов (1232266).
- TypedArray.from(), TypedArray.of(), TypedArray.prototype.filter(), TypedArray.prototype.map(), TypedArray.prototype.slice(), TypedArray.prototype.subarray() теперь требуют, чтобы их значения были допустимыми конструкторами Typed Array (1122396).
- Нестандартный метод ArrayBuffer.slice() объявлен устаревшим и выдаёт предупреждение при использовании (1316913).
- Экранированные кодовые точки Unicode теперь могут применяться в качестве идентификаторов (например, «let \u{61} = 123») (1314037).
- В соответствии со спецификацией ES2015
\u2e2f
иⸯ
будут выброшены при использовании в качестве идентификаторов (917436, 1197230).
DOM:
- Полностью реализован Selection API, включая события selectstart и selectionchange (см. также GlobalEventHandlers.onselectstart и GlobalEventHandlers.onselectionchange) (1309612).
- Реализована поддержка свойства Event.composed (1292063).
- Теперь только HTML-элементы, а также элементы <svg> и <math> могут быть помещены в полноэкранный режим с помощью вызова Element.requestFullScreen() (1305928).
- На платформе Windows включены тач-события (1244402). Они были отключены в Firefox 24, поскольку ломали множество сайтов (888304).
- Реализованы события focusin и focusout (687787).
- Реализовано свойство WindowOrWorkerGlobalScope.isSecureContext (1269052).
- Событие Web App Manifest «install» переименовано в «appinstalled» (1309099).
- Свойство Drag and drop API DataTransfer.types теперь возвращает замороженный массив DOMString вместо DOMStringList (1298243).
- События loadstart и loadend теперь срабатывают на элементах <img> (1264769).
- Реализовано свойство Notification.requireInteraction (862395)
- Метод Window.open() обзавёлся оконным свойством (1267339)
noopener
, копирующим функцииrel="noopener"
. - Реализован метод CustomElementRegistry.get() (1275838).
- Свойства Pointer Event width и height теперь по умолчанию имеют значение «1» (1304315).
- Обновлён File and Directory Entries API (1284987).
Сервисные воркеры и Fetch API:
- Удалён метод Headers.getAll(); Headers.get() теперь получает все значения указанного заголовка, а не только первое (1278275).
Web Audio API:
- Добавлен интерфейс ConstantSourceNode. Он представляет собой аудиоисточник, всегда передающий поток сэмплов, имеющих одинаковое значение. Статья с примерами того, как он может быть использован для упрощения сложных аудиопотоков.
WebRTC:
- Теперь, если ICE-соединение временно повреждено, свойство RTCPeerConnection.iceConnectionState принимает значение «disconnected» (852665).
- Добавлены обработчик событий MediaDevices.ondevicechange и событие devicechange.
- Реализована поддержка свойства MediaStream.active, показывающего есть ли хоть один трек в воспроизводимом в данный момент потоке.
- Метод MediaStreamTrack.stop() может останавливать воспроизведение не только лишь локальных треков.
Звук/видео:
- Объекты MediaError, указанные в HTMLMediaElement.error при возникновении ошибки в обработке элемента <audio> или <video>, отныне включают свойство message, которое даёт конкретное описание случившейся ошибки.
Другие API:
- Удалён метод FileSystemFileEntry.createWriter(). Он был добавлен в Firefox 50, но всегда возвращал ошибку (1315185).
- Удалены нестандартные API, связанные с Firefox OS: Apps installation/management APIs (1261019), Web Telephony API (1309719), Web Bluetooth API (1310020).
- ImageBitmapRenderingContext.transferImageBitmap() переименован в ImageBitmapRenderingContext.transferFromImageBitmap() (1304767).
- Из CanvasRenderingContext2D удалены члены mozDash и mozDashOffset (931389).
HTTP:
- Заголовок Referrer-Policy теперь поддерживает директивы
same-origin
,strict-origin
иstrict-origin-when-cross-origin
(1276836). - Выражение 'strict-dynamic' теперь поддерживается для директив Content-Security-Policy, таких, как script-src (1299483).
- Добавлена поддержка заголовка Large-Allocation (1304140).
SVG:
- SVG документы теперь представлены не с помощью интерфейса SVGDocument, а с помощью XMLDocument, как того требует спецификация SVG 2.
>>> Подробности