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, указывающие наPromisereadyи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 для разработчиков