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

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

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

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

HTML

Удалено

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

CSS

Удалено

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

SVG

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

JavaScript

Удалено

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

API

Новые API

DOM

  • Включены по умолчанию следующие элементы API Web Animations (см. Firefox bug 1476158):

  • Реализован метод 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).

Удалено

CSSOM

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

HTTP

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

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

  • Фавиконы сайтов отныне подчиняются политике защиты контента (CSP), если она настроена (Firefox bug 1297156).
  • Выражение 'report-sample' директивы CSP script-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 теперь включает необязательное поле в объекте highlightInfopopulate — по умолчанию имеющее значение 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).

Прочее

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