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