Firefox 32

Новый выпуск продвинутого веб-браузера Firefox с истинно компьютерным номером 32 (25) приготовил немало интересного.

CSS, HTML

  • Поддержка sticky-позицинирования средствами CSS, экспериментально реализованная в Firefox 26, включена по умолчанию. Ранее эта функциональность реализовывалась путём динамического переключения позиционирования на фиксированное (fixed) и обратно с помощью JavaScript.
  • Поддержка свойства mix-blend-mode, экспериментально реализованная в Firefox 27, включена по умолчанию.
  • Поддержка свойства box-decoration-break, позволяющего управлять тем, как следует применять к элементу свойства background, padding, border, border-image, box-shadow, margin и clip, если элемент представлен на странице несколькими фрагментами (например, строчный элемент, занимающий несколько строк). Ранее аналогичная функциональность в Firefox реализовывалась с помощью нестандартного свойства -moz-background-inline-policy.
  • Экспериментальная поддержка атрибута srcset HTML-элемента IMG, позволяющего указать пути к нескольким изображениям для отображения на мониторах с разной плотностью точек, открывая новые возможности для отзывчивой/адаптивной вёрстки. Пока поддержка по умолчанию отключена и может быть включена с помощью настройки dom.image.srcset.enable на странице скрытых настроек Firefox, доступной по псевдо-URL-адресу about:config.

JavaScript, DOM

  • Новый метод Array.from(), предусмотренный в ECMAScript 6, позволяет легко и интуитивно преобразовывать в стандартный массив любой массивоподобный объект (например, список DOM-узлов) с целью дальнейшего удобного манипулирования им с помощью стандартных методов объекта Array, недоступных для объектов других типов. Ранее для такого преобразования требовалось применять громоздкий и не слишком наглядный вызов вида Array.prototype.slice.call(arrayLike, 0).
  • Экспериментальное свойство navigator.languages содержит список (объект Array) предпочитаемых пользователем языков, представленных строками в формате, соответствующем стандарту BCP 47. Ранее доступное свойство navigator.language (без s в конце названия) содержит первый из языков, содержащихся в новом свойстве navigator.languages. Параллельно реализована поддержка события languagechange, возникающего при смене предпочитаемого пользователем языка.
  • Методы KeyboardEvent.getModifierState() и MouseEvent.getModifierState() теперь поддерживают виртуальный модификатор Accel.
  • Экспериментальная поддержка свойства KeyboardEvent.code, содержащего код физической клавиши, не зависящий от текущей раскладки или состояния клавиши-модификатора. По умолчанию поддержка пока (ориентировочно до выхода следующей версии Firefox) отключена и может быть включена с помощью настройки dom.keyboardevent.code.enabled на странице about:config.
  • Долгожданная поддержка псевдокласса :scope в DOM-методах querySelector() и querySelectorAll(). Полезно (в том числе с точки зрения быстродействия), например, для получения списка элементов, имеющих заданный тип и являющихся непосредственными дочерними элементами элемента, ссылка на который уже получена ранее и хранится в переменной:

    var parent = someWayToGetTheElement();
    var elems  = parent.querySelectorAll(':scope > SPAN');
    // `elems` содержит элементы `SPAN`, дочерние по отношению
    // к элементу, ссылка на который хранится в `parent`.

  • Поддержка свойства responseURL объекта XMLHttpRequest.
  • Поддержка программного интерфейса (API) Encrypted Media Extensions в рамках реализации стандартизованного W3C механизма отображения защищённого медиаконтента (DRM). См. также официальное разъяснение позиции Mozilla по этому вопросу.

Быстродействие

  • Новый механизм кэширования, находившийся в разработке более года и отличающийся повышенным быстродействием, сниженным потреблением памяти и большей устойчивостью к аварийному завершению работы браузера.
  • Новый механизм «сбора мусора» — Generational garbage collection — предполагает использование разных подходов к работе с объектами в зависимости от продолжительности их существования для повышения быстродействия JavaScript-сценариев.

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

  • В пользовательский интерфейс инструментов веб-разработки добавлены пиктограммы высокого разрешения в рамках поддержки мониторов высокого разрешения (HiDPI).
  • Новый инструмент веб-разработки Web Audio Editor предоставляет возможность отладки веб-приложений, использующих Web Audio API. Чтобы инструмент стал доступен, следует активировать настройку «Веб-аудио» в секции «Инструменты разработчика Firefox по умолчанию» на странице настроек инструментов веб-разработки.
  • В инструменты веб-разработки добавлено встроенное средство снятия скриншотов страниц, реализуемое кнопкой с изображением фотоаппарата в ряду кнопок справа от ярлыков вкладок инструментов веб-разработки. Чтобы оно стало доступно, следует активировать настройку «Сделать скриншот всей страницы» в секции «Доступные кнопки инструментов» на странице настроек инструментов веб-разработки. Файл скриншота в формате PNG сохраняется в папку для загрузок браузера.
  • Поддержка отображения стилей браузера по умолчанию в инструментах веб-разработки. Для включения этой возможности следует активировать настройку «Отображать стили браузера» в секции «Инспектор» страницы настроек инструментов веб-разработки.
  • Поддержка автодополнения в редакторе кода Scratchpad.

Прочее

  • Механизм Public Key Pinning призван защитить от так называемых атак посредника (Man in the middle) путём ограничения перечня разрешённых центров сертификации для защищённых соединений с доменами популярных сайтов типа Twitter.
  • В панели поиска по странице теперь отображается количество найденных совпадений и порядковый номер текущего подсвеченного совпадения.

О других новшествах Firefox 32 читайте в официальных примечаниях к выпуску и информации для разработчиков.