Firefox 63 для разработчиков
В этой статье перечислены ключевые изменения, которые касаются разработчиков. Firefox 63 был выпущен 23 октября 2018 года.
Изменения для веб-разработчиков
Инструменты разработчика
- Вкладка инспектора «Шрифты» обзавелась редактором, облегчающим просмотр и правку настроек используемых шрифтов. Подробнее см. в Edit fonts.
- Включён по умолчанию инспектор поддержи доступности (Firefox bug 1482454).
- При наведении курсора на объект в инспекторе поддержки доступности, элемент будет подсвечен, а его роль и имя показаны в информационной панели на странице (Firefox bug 1473030).
- Командная строка веб-консоли теперь находится не внизу окна, а прямо после вывода консоли (Firefox bug 1136299).
- Если адрес принадлежит домену, о котором известно, что он отслеживает пользователей, сетевой монитор покажет специальный значок перед этой ссылкой — см. Значки безопасности (Firefox bug 1333994).
- Настройка
devtools.aboutdebugging.showSystemAddons
отныне по умолчанию имеет значениеfalse
, что означает — системные дополнения не будут показаны на страницеabout:debugging
. Значение этой настройки можно изменить на страницеabout:config
(Firefox bug 1425347). - Упрощена панель инструментов режима адаптивного дизайна, кроме того, добавлена возможность выровнять область просмотра по левому краю.
- Для пользовательских элементов инспектор теперь показывает ссылку на определение класса (Firefox bug 1443923).
HTML
- Элемент
<img>
обзавёлся поддержкой атрибутаdecoding
(Firefox bug 1416328); см. такжеHTMLImageElement.decoding
.
Удалено
- Удалена поддержка ссылок с типом
sidebar
(rel="sidebar"
) (Firefox bug 1452645).
CSS
- Добавлена поддержка псевдокласса
:defined
(Firefox bug 1331334). - В Flexbox-раскладку добавлена поддержка
row-gap
,column-gap
иgap
(Firefox bug 1398483). - Снова включена поддержка запросов pixel-density правила @media, у которых есть префикс -webkit (Firefox bug 1444139).
- Реализована поддержка свойств CSS Flexible Box Layout (Flexbox)
align-self
,align-content
иalign-items
, а такжеjustify-content
(Firefox bug 1472843). - Реализована функция
path
дляoffset-path
(Firefox bug 1429298). - Внесены улучшения синтаксиса из спецификации Media Queries Level 4 (Firefox bug 1472843).
- Свойства
offset-*
переименованы вinset-block-start
,inset-block-end
,inset-inline-start
иinset-inline-end
(Firefox bug 1464782). - Добавлена поддержка prefers-reduced-motion (Firefox bug 1365045, Firefox bug 1475462).
- Свойство
resize
обзавелось относительно-направленными значениями (block
,inline
) (Firefox bug 1464786). - Реализована flexbox-раскладка для значений
safe
иunsafe
вalign-self
,align-content
иjustify-content
(Firefox bug 1297774). - Логические свойства (там, где это необходимо) стали анимируемыми (Firefox bug 1309752).
Удалено
- Удалены
offset-block-start
,offset-block-end
,offset-inline-start
иoffset-inline-end
; как упомянуто выше, они переименованы вinset-*
(Firefox bug 1464782).
SVG
Без изменений.
JavaScript
- Реализована поддержка свойства
Symbol.prototype.description
(Firefox bug 1472170). - Добавлен метод
Object.fromEntries
(Firefox bug 1469019). - Существенно улучшено сообщение об ошибке, выдаваемое при попытке доступа к свойству не определённого объекта. В случае, когда
x
не определён, а вы пытаетесь получить доступ кx.y
, консоль вернёт более понятноеx не определён; невозможно получить доступ к его свойству "y"
вместоTypeError: x не определён
(Firefox bug 1259822).
Удалено
- Удалена экспериментальная поддержка сериализации IndexedDB WebAssembly.Module (Firefox bug 1469395).
API
Новые API
- Включена по умолчанию поддержка API Shadow DOM (Firefox bug 1471947) и Custom Elements (Firefox bug 1471948); см. Веб-компоненты для получения подробных сведений.
- Реализован API Media Capabilities (Firefox bug 1409664).
- Реализована и включена по умолчанию поддержка API Async Clipboard (Firefox bug 1461465). Как и в Chrome, в Firefox реализованы лишь методы
writeText()
иreadText()
, но, в отличие от Chrome,readText()
доступен лишь дополнениям. - Поддерживается интерфейс
SecurityPolicyViolationEvent
. Он позволяет отправлять события при нарушенииContent-Security-Policy
(Firefox bug 1472661).
DOM
-
Включены по умолчанию следующие элементы API Web Animations (см. Firefox bug 1476158):
- Свойства
ready
иfinished
Animation
, указывающие наPromise
ready
иfinished
объектаAnimation
. - Свойство
effect
объектаAnimation
. - Интерфейсы
KeyframeEffect
иAnimationEffect
.
- Свойства
-
Реализован метод
Element.toggleAttribute()
(Firefox bug 1469592). -
В целях совместимости добавлена поддержка нестандартного свойства
Event.returnValue
(Firefox bug 1452569). -
Теперь, когда свойство
Window.event
стало стандартным, оно реализовано в Firefox в целях совместимости (Firefox bug 218415), но из-за проблем совместимости (см. Firefox bug 1479964) включено лишь в «ночных» выпусках. Его поддержкой управляет настройкаdom.window.event.enabled
(Firefox bug 1493869). -
Для паритета с Edge и Chrome свойство
navigator.platform
отныне возвращает"Win32"
даже в 64-разрядных операционных системах Windows (Firefox bug 1472618). -
Раньше, ссылки, открывающие новые окна с
rel="noopener"
, иWindow.open()
сnoopener
приводили к тому, что у окна были отключены все свойства и разработчику приходилось включать необходимые ему стандартные свойства. Отныне такие окна будут иметь все те же свойства, что и любое другое окно, а разработчику следует отключать нежелательные (Firefox bug 1419960).
События DOM
-
На платформе Windows улучшена обработка правой клавиши
Alt
. Если в текущей раскладке клавиша
Alt
назначена на
AltGr
, значение
KeyboardEvent.key
будет"AltGraph"
. Такое поведение соответствует поведению, принятому недавно в Chrome (Firefox bug 900750).
Медиа, Web Audio и WebRTC
- Доступ к микрофону теперь работает одновременно в нескольких вкладках, даже в рамках одного процесса контента (Firefox bug 1404977).
RTCDataChannel
теперь поддерживает формат данных sctp-sdp-21 в дополнение к старому формату sctp-sdp-05.- Узлы
ConstantSourceNode
отныне имеют не один, а два канала (Firefox bug 1413283). - Интерфейс API Web Audio
AudioScheduledSourceNode
(и все остальные типы узлов, основанные на нём) теперь выбрасывает корректное исключение (RangeError
), если время начала узла представляет собой отрицательное значение (Firefox bug 1413284). - Минимальные и максимально допустимые значения
value
объектаAudioParam
изменены на минимальное отрицательное число с плавающей запятой одинарной точности (-340,282,346,638,528,859,811,704,183,484,516,925,440) и максимальное положительное число с плавающей запятой одинарной точности (+340,282,346,638,528,859,811,704,183,484,516,925,440) (Firefox bug 1476695). - Включена по умолчанию поддержка метода
SourceBuffer.changeType
, позволяющего изменить кодеки во время активного потока. Это часть API Media Source Extensions (Firefox bug 1481166). - Метод
AudioParam.setValueCurveAtTime()
обновлён, чтобы корректно принимать массив значений с плавающей запятой для указания значений параметров, которые изменяются со временем. До этого он требовалFloat32Array
(Firefox bug 1421091). AudioParam.setValueCurveAtTime()
обновлён, чтобы возвращать правильныйTypeError
, если в массивеvalues
обнаружено не конечное значение (Firefox bug 1472095).- Кроме того,
setValueCurveAtTime()
обновлён таким образом, чтобы, когда параметр заканчивает следовать кривой значений, значение параметра устанавливалось в соответствии с последним значением в списке значений кривой (Firefox bug 1308436). - Словарь
RTCRTPStreamStats
переименован вRTCRtpStreamStats
согласно прочим словарям WebRTC и спецификации (Firefox bug 1480498). - Словарь
RTCRtpStreamStats
получил поддержку свойстваkind
(Firefox bug 1481851). - Свойство
isRemote
словаряRTCRtpStreamStats
объявлено устаревшим и будет удалено в Firefox 65. При доступе к свойству будет выведено предупреждение в консоли. Подробности в блоге (Firefox bug 1393306).
Canvas и WebGL
HTMLCanvasElement.getContext()
обзавёлся новым атрибутомpowerPreference
. В macOS, при наличии нескольких графических процессоров, это позволяет приложениям и апплетам WebGL, которым не важна производительность, запрашивать слабый GPU вместо более мощного и потребляющего больше энергии (Firefox bug 1349799).
Удалено
- Удалены устаревшие нестандартные методы
Window.back()
иWindow.forward()
, реализованные лишь в Firefox. Вместо них следует использовать методыwindow.history.back()
иwindow.history.forward()
(Firefox bug 1479486). - Методы
createObjectURL()
иrevokeObjectURL()
больше не доступны на экземплярахServiceWorker
, поскольку легко приводят к утечкам памяти (Firefox bug 1264182). - Удалена устаревшая и ограниченная поддержка эффектов Доплера на
PannerNode
. У интерфейсаAudioListener
удалены свойстваdopplerFactor
иspeedOfSound
, кроме того, у интерфейсаPannerNode
удалён методsetVelocity()
(Firefox bug 1148354).
CSSOM
Без изменений.
HTTP
- Реализован заголовок
Clear-Site-Data
; больше он не скрыт за соответствующей настройкой (Firefox bug 1470111).
Безопасность
- Фавиконы сайтов отныне подчиняются политике защиты контента (CSP), если она настроена (Firefox bug 1297156).
- Выражение
'report-sample'
директивы CSPscript-src
отныне учитывается при создании отчёта о нарушении. Эта директива указывает, что в отчёт должен быть включён краткий пример того, где произошло нарушение. До этого Firefox всегда включал такой пример в отчёт (Firefox bug 1473218). - Библиотеки NSS обновлены до версии 3.39 (Firefox bug 1470914).
Плагины
Без изменений.
WebDriver (Marionette)
Новые возможности
- Marionette будет возвращать возможность
setWindowRect
в ответыWebDriver:NewSession
, если браузер поддерживает все команды позиционирования и изменения размера окна (это верно лишь для Firefox, но не для любого мобильного приложения) (Firefox bug 1470659). - Реализована поддержка возможности
unhandledPromptBehavior
, позволяющая настроить prompt behavior (Firefox bug 1264259). - Командам
WebDriver:ExecuteScript
иWebDriver:ExecuteAsyncScript
добавлена возможность обработки запросов к пользователю (Firefox bug 1439995).
Изменения API
- Удалены устаревшие конечные точки команд без префикса
WebDriver:
(Firefox bug 1451725). - Команда
WebDriver:NewSession
возвращает рекомендованные строки (linux
,mac
,windows
) дляplatformName
, как и определено в спецификации WebDriver (Firefox bug 1470646).
Исправленные ошибки
- События, связанные с фокусом, отсутствовали при взаимодействии элементов, если окно браузера находилось в фоне (Firefox bug 1398111).
- Последовательное выполнение действий
pointerDown
иpointerUp
могло вызвать двойной щелчок, посколькуWebDriver:ReleaseActions
не сбрасывал счётчик двойных щелчков (Firefox bug 1422583). - Многократное выполнение действий
pause
могло привести к бесконечному зависанию (Firefox bug 1447449). WebDriver:ExecuteScript
иWebDriver:ExecuteAsyncScript
вызывали ошибку циклической ссылки при возвращении коллекции элементов (Firefox bug 1447977).- Для предотвращения состояния гонки команды
WebDriver:AcceptAlert
иWebDriver:DismissAlert
будут ожидать закрытия запроса к пользователю (Firefox bug 1479368). - Записи журнала, вызванные скриптом фрейма, не ограничивались
MarionettePrefs.logLevel
, а содержали всё подряд (Firefox bug 1482829). WebDriver:TakeScreenshot
вызывал ошибку при создании скриншота окна, у которого размер стороны превышал 32767 пикселей (Firefox bug 1485730).WebDriver:SendAlertText
не заменял текст по умолчанию в запросе у пользователя, если переданный текст представлял собой пустую строку (Firefox bug 1486485).
Прочее
- Исправлено поведение
PerformanceObserver.observe()
: этот метод теперь ничего не делает, если в указанном массиве типов записей не обнаружены допустимые типы записей или массив пуст/отсутствует. До этого некорректно выбрасывалсяTypeError
(Firefox bug 1403027). - Формат OpenSearch теперь допускает использование
application/json
в качестве типа URL-адреса (application/json
является ссылкой наapplication/x-suggestions+json
) (Firefox bug 1425827).
Изменения для разработчиков дополнений
Изменения API
Темы
-
Цвет текста по умолчанию для значков
browserAction
теперь автоматически становится чёрным или белым, чтобы достичь максимального контраста с фоном (Firefox bug 1474110). -
Свойства
accentcolor
иtextcolor
ключаtheme
теперь необязательны (Firefox bug 1413144). -
browserAction.getBadgeTextColor()
иbrowserAction.setBadgeTextColor()
позволяют получать и настраивать цвет текста значковbrowserAction
(Firefox bug 1424620). -
Объект
colors
ключаtheme
теперь поддерживает свойстваntp_text
(для указания цвета текста в новой вкладке) иntp_background
(для указания цвета фона) (Firefox bug 1347204). -
Темы получили возможность настраивать цвет боковых панелей, например, боковой панели закладок (Firefox bug 1418602). Соответствующие свойства:
sidebar
: цвет фона.sidebar_text
: цвет текста.sidebar_highlight
: цвет фона выделенного элемента.sidebar_highlight_text
: цвет текста выделенного элемента.
-
Метод
management.install()
позволяет дополнениям устанавливать и задействовать подписанные темы (Firefox bug 1369209).
Поиск
- Новый API
search
позволяет получить список установленных поисковых плагинов, и выполнять поиск с их помощью (Firefox bug 1352598). topSites.get()
получил поддержку параметраoptions
, позволяющего настроить различные параметры возвращённого списка сайтов (Firefox bug 1445836).
Вкладки
tabs.onHighlighted
отныне поддерживает множественное выделение (Firefox bug 1474440).tabs.highlight
теперь включает необязательное поле в объектеhighlightInfo
—populate
— по умолчанию имеющее значениеtrue
. Установка его значения вfalse
запрещает возвращённому объектуwindows.Window
заполнять список вкладок, что положительно сказывается на производительности (Firefox bug 1489814).tabs.update
позволяет менять статус выделения вкладки с помощьюhighlighted: true
в параметреupdateProperties
(Firefox bug 1479129).tabs.update
поддерживает изменения статуса выделения вкладки без изменения фокуса (Firefox bug 1486050). Для этого в параметреupdateProperties
используются одновременноhighlighted: true
иactive: false
.tabs.query
стала возвращать массив объектовtabs.Tab
при выборе нескольких вкладок (Firefox bug 1465170).- Свойство
tabs.Tab
теперь корректно отражает то, какие вкладки выделены (подсвечены), аtabs.highlight
поддерживает изменение статуса выделения нескольких вкладок (Firefox bug 1464862). - Свойство
isarticle
в объектеextraParameters
, передаваемом вtabs.onUpdated
, переименовано вisArticle
. Старое название сохранено, но объявлено устаревшим. Это изменение попало в Firefox 62 (Firefox bug 1461695). - Событие
tabs.onUpdated
позволяет отслеживать, какая вкладка привлекает внимание пользователя с помощью свойстваattention
объектаchangeInfo
(Firefox bug 1396684).
Меню
- В API
menus
добавленmenus.getTargetElement()
. Метод возвращает щелчок по элементу, на который ссылается параметрtargetElementId
(Firefox bug 1325814). menus.create()
теперь позволяет создавать невидимые пункты меню,menus.update()
позволяет переключать видимость пунктов меню (Firefox bug 1482529).- Элементы, созданные с помощью API
menus
, обзавелись поддержкой клавиш доступа (Firefox bug 1320462). - Параметр
menus.create()
иmenus.update()
targetUrlPatterns
теперь поддерживает любые схемы URL-адресов, даже те, которые обычно не допускаются в шаблоне соответствия (Firefox bug 1280370). - При нажатии на элемент контекстного меню вкладки, разрешение "activeTab" будет дано этой вкладке, даже если она не является активной (Firefox bug 1446956).
Прочее
commands.onCommand
теперь расценивается как пользовательский ввод (Firefox bug 1408129).- API
webRequest
позволяет фильтровать speculative-соединения (Firefox bug 1479565). webRequest.SecurityInfo
обзавёлся свойствамиkeaGroupName
иsignatureSchemeName
. Это изменение попало в Firefox 62 (Firefox bug 1471959).cookies.Cookie
включает свойство, показывающее состояние атрибута SameSite у кук. Перечислениеcookies.SameSiteStatus
определяет значение состояния SameSite (Firefox bug 1351663).- Шаблоны соответствия для URL-адресов теперь явно соответствуют схеме "данные" (Firefox bug 1280370).
Предыдущие версии
- Firefox 62 для разработчиков
- Firefox 61 для разработчиков
- Firefox 60 для разработчиков
- Firefox 59 для разработчиков
- Firefox 58 для разработчиков
- Firefox 57 для разработчиков
- Firefox 56 для разработчиков
- Firefox 55 для разработчиков
- Firefox 54 для разработчиков
- Firefox 53 для разработчиков
- Firefox 52 для разработчиков
- Firefox 51 для разработчиков
- Firefox 50 для разработчиков
- Firefox 49 для разработчиков
- Firefox 48 для разработчиков
- Firefox 47 для разработчиков
- Firefox 46 для разработчиков
- Firefox 45 для разработчиков
- Firefox 44 для разработчиков
- Firefox 43 для разработчиков
- Firefox 42 для разработчиков
- Firefox 41 для разработчиков
- Firefox 40 для разработчиков
- Firefox 39 для разработчиков
- Firefox 38 для разработчиков
- Firefox 37 для разработчиков
- Firefox 36 для разработчиков
- Firefox 35 для разработчиков
- Firefox 34 для разработчиков
- Firefox 33 для разработчиков
- Firefox 32 для разработчиков