Firefox 63 для разработчиков

В этой статье перечислены ключевые изменения, которые касаются разработчиков. Firefox 63 был выпущен 23 октября 2018 года.

Изменения для веб-разработчиков

Инструменты разработчика

HTML

Удалено

  • Удалена поддержка ссылок с типом sidebar (rel="sidebar") (баг 1452645).

CSS

Удалено

  • Удалены offset-block-start, offset-block-end, offset-inline-start и offset-inline-end; как упомянуто выше, они переименованы в inset-* (баг 1464782).

SVG

Без изменений.

JavaScript

Удалено

  • Удалена экспериментальная поддержка сериализации IndexedDB WebAssembly.Module (баг 1469395).

API

Новые API

DOM

  • Включены по умолчанию следующие элементы API Web Animations (см. баг 1476158):
  • Реализован метод Element.toggleAttribute() (баг 1469592).
  • В целях совместимости добавлена поддержка нестандартного свойства Event.returnValue (баг 1452569).
  • Теперь, когда свойство Window.event стало стандартным, оно реализовано в Firefox в целях совместимости (баг 218415), но из-за проблем совместимости (см. баг 1479964) включено лишь в «ночных» выпусках. Его поддержкой управляет настройка dom.window.event.enabled (баг 1493869).
  • Для паритета с Edge и Chrome свойство navigator.platform отныне возвращает "Win32" даже в 64-разрядных операционных системах Windows (баг 1472618).
  • Раньше, ссылки, открывающие новые окна с rel="noopener", и Window.open() с noopener приводили к тому, что у окна были отключены все свойства и разработчику приходилось включать необходимые ему стандартные свойства. Отныне такие окна будут иметь все те же свойства, что и любое другое окно, а разработчику следует отключать нежелательные (баг 1419960).

События DOM

  • На платформе Windows улучшена обработка правой клавиши Alt. Если в текущей раскладке клавиша Alt назначена на AltGr, значение KeyboardEvent.key будет "AltGraph". Такое поведение соответствует поведению, принятому недавно в Chrome (баг 900750).

Медиа, Web Audio и WebRTC

  • Доступ к микрофону теперь работает одновременно в нескольких вкладках, даже в рамках одного процесса контента (баг 1404977).
  • RTCDataChannel теперь поддерживает формат данных sctp-sdp-21 в дополнение к старому формату sctp-sdp-05.
  • Узлы ConstantSourceNode отныне имеют не один, а два канала (баг 1413283).
  • Интерфейс API Web Audio AudioScheduledSourceNode (и все остальные типы узлов, основанные на нём) теперь выбрасывает корректное исключение (RangeError), если время начала узла представляет собой отрицательное значение (баг 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) (баг 1476695).
  • Включена по умолчанию поддержка метода SourceBuffer.changeType, позволяющего изменить кодеки во время активного потока. Это часть API Media Source Extensions (баг 1481166).
  • Метод AudioParam.setValueCurveAtTime() обновлён, чтобы корректно принимать массив значений с плавающей запятой для указания значений параметров, которые изменяются со временем. До этого он требовал Float32Array (баг 1421091).
  • AudioParam.setValueCurveAtTime() обновлён, чтобы возвращать правильный TypeError, если в массиве values обнаружено не конечное значение (баг 1472095).
  • Кроме того, setValueCurveAtTime() обновлён таким образом, чтобы, когда параметр заканчивает следовать кривой значений, значение параметра устанавливалось в соответствии с последним значением в списке значений кривой (баг 1308436).
  • Словарь RTCRTPStreamStats переименован в RTCRtpStreamStats согласно прочим словарям WebRTC и спецификации (баг 1480498).
  • Словарь RTCRtpStreamStats получил поддержку свойства kind (баг 1481851).
  • Свойство isRemote словаря RTCRtpStreamStats объявлено устаревшим и будет удалено в Firefox 65. При доступе к свойству будет выведено предупреждение в консоли. Подробности в блоге (баг 1393306).

Canvas и WebGL

  • HTMLCanvasElement.getContext() обзавёлся новым атрибутом powerPreference. В macOS, при наличии нескольких графических процессоров, это позволяет приложениям и апплетам WebGL, которым не важна производительность, запрашивать слабый GPU вместо более мощного и потребляющего больше энергии (баг 1349799).

Удалено

CSSOM

Без изменений.

HTTP

  • Реализован заголовок Clear-Site-Data; больше он не скрыт за соответствующей настройкой (баг 1470111).

Безопасность

  • Фавиконы сайтов отныне подчиняются политике защиты контента (CSP), если она настроена (баг 1297156).
  • Выражение 'report-sample' директивы CSP script-src отныне учитывается при создании отчёта о нарушении. Эта директива указывает, что в отчёт должен быть включен краткий пример того, где произошло нарушение. До этого Firefox всегда включал такой пример в отчёт (баг 1473218).
  • Библиотеки NSS обновлены до версии 3.39 (баг 1470914).

Плагины

Без изменений.

WebDriver (Marionette)

Новые возможности

  • Marionette будет возвращать возможность 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(): этот метод теперь ничего не делает, если в указанном массиве типов записей не обнаружены допустимые типы записей или массив пуст/отсутствует. До этого некорректно выбрасывался TypeError (баг 1403027).
  • Формат OpenSearch теперь допускает использование application/json в качестве типа URL-адреса (application/json является ссылкой на application/x-suggestions+json) (баг 1425827).

Изменения для разработчиков дополнений

Изменения API

Темы

  • Цвет текста по умолчанию для значков browserAction теперь автоматически становится чёрным или белым, чтобы достичь максимального контраста с фоном (баг 1474110).
  • Свойства accentcolor и textcolor ключа theme теперь необязательны (баг 1413144).
  • browserAction.getBadgeTextColor() и browserAction.setBadgeTextColor() позволяют получать и настраивать цвет текста значков browserAction (баг 1424620).
  • Объект colors ключа theme теперь поддерживает свойства ntp_text (для указания цвета текста в новой вкладке) и ntp_background (для указания цвета фона) (баг 1347204).
  • Темы получили возможность настраивать цвет боковых панелей, например, боковой панели закладок (баг 1418602). Соответствующие свойства:
    • sidebar: цвет фона.
    • sidebar_text: цвет текста.
    • sidebar_highlight: цвет фона выделенного элемента.
    • sidebar_highlight_text: цвет текста выделенного элемента.
  • Метод management.install() позволяет дополнениям устанавливать и задействовать подписанные темы (баг 1369209).

Поиск

  • Новый API search позволяет получить список установленных поисковых плагинов, и выполнять поиск с их помощью (баг 1352598).
  • topSites.get() получил поддержку параметра options, позволяющего настроить различные параметры возвращённого списка сайтов (баг 1445836).

Вкладки

  • tabs.onHighlighted отныне поддерживает множественное выделение (баг 1474440).
  • tabs.highlight теперь включает необязательное поле в объекте highlightInfopopulate — по умолчанию имеющее значение true. Установка его значения в false запрещает возвращённому объекту windows.Window заполнять список вкладок, что положительно сказывается на производительности (баг 1489814).
  • tabs.update позволяет менять статус выделения вкладки с помощью highlighted: true в параметре updateProperties (баг 1479129).
  • tabs.update поддерживает изменения статуса выделения вкладки без изменения фокуса (баг 1486050). Для этого в параметре updateProperties используются одновременно highlighted: true и active: false.
  • tabs.query стала возвращать массив объектов tabs.Tab при выборе нескольких вкладок (баг 1465170).
  • Свойство tabs.Tab теперь корректно отражает то, какие вкладки выделены (подсвечены), а tabs.highlight поддерживает изменение статуса выделения нескольких вкладок (баг 1464862).
  • Свойство isarticle в объекте extraParameters, передаваемом в tabs.onUpdated, переименовано в isArticle. Старое название сохранено, но объявлено устаревшим. Это изменение попало в Firefox 62 (баг 1461695).
  • Событие tabs.onUpdated позволяет отслеживать, какая вкладка привлекает внимание пользователя с помощью свойства attention объекта changeInfo (баг 1396684).

Меню

  • В API menus добавлен menus.getTargetElement(). Метод возвращает щелчок по элементу, на который ссылается параметр targetElementId (баг 1325814).
  • menus.create() теперь позволяет создавать невидимые пункты меню, menus.update() позволяет переключать видимость пунктов меню (баг 1482529).
  • Элементы, созданные с помощью API menus, обзавелись поддержкой клавиш доступа (баг 1320462).
  • Параметр menus.create() и menus.update() targetUrlPatterns теперь поддерживает любые схемы URL-адресов, даже те, которые обычно не допускаются в шаблоне соответствия (баг 1280370).
  • При нажатии на элемент контекстного меню вкладки, разрешение "activeTab" будет дано этой вкладке, даже если она не является активной (баг 1446956).

Прочее

См. также

Предыдущие версии

Метки документа и участники

Метки: 
Внесли вклад в эту страницу: dartraiden
Обновлялась последний раз: dartraiden,