Firefox 25
- Опубликовано:

Web Audio API
Юбилейный, 25-й выпуск свободного веб-браузера Firefox дарит нам долгожданную поддержку Web Audio API — стандартизованного набора программных средств, позволяющих манипулировать звуком непосредственно в браузере с помощью JavaScript без использования сторонних программных модулей (плагинов) типа Flash.
Web Audio API открывает широкие возможности по обработке и генерации звука, например, в онлайн-аудиопроигрывателях, музыкальных веб-приложениях и браузерных играх. В перспективе можно ожидать появления полномасштабных программных рабочих станций для работы с музыкой и звуком (DAW), работающих непосредственно в браузере. Особенно актуальным их практическое использование может стать в сочетании с Web MIDI API, спецификация которого находится сейчас в разработке и в будущем позволит веб-приложениям работать с MIDI-данными и взаимодействовать с внешними устройствами типа MIDI-клавиатур.
К сожалению, в Firefox-реализации Web Audio API пока есть некоторые проблемы с быстродействием, но это не отменяет значимости нововведения в целом.
Единственное, что не вполне ясно — Web Audio API в Firefox реализован почему-то сразу без префикса, в то время как спецификация по-прежнему находится в состоянии черновика, а значит теоретически ещё может измениться несовместимым с существующими реализациями образом.
Изначально планировалось включить поддержку Web Audio API уже в Firefox 23, но ввиду недостаточной на тот момент стабильности включение этой функциональности было отложено до Firefox 25.
Ранее в Firefox (начиная с Firefox 4) была реализована экспериментальная поддержка Audio Data API — собственного нестандартного API для работы со звуком, который обладает сходными с Web Audio API возможностями, но начиная с Firefox 22 не рекомендуется к использованию ввиду своей нестандартности на фоне планов по реализации стандартного Web Audio API. В Firefox 28 программный интерфейс Audio Data планируется отключить на уровне настройки в about:config, а спустя несколько версий — полностью удалить весь относящийся к Audio Data API программный код.
HTML, CSS
- Содержимое фрейма теперь можно задать в атрибуте
srcdocсоответствующего HTML-элементаIFRAME. В JavaScript атрибутуsrcdocсоответствует свойствоsrcDoc. - Поддержка значения
localCSS-свойстваbackground-attachment. Значениеlocalпозволяет прокручивать фоновое изображение вместе с содержимым элемента — без необходимости добавлять дополнительный вложенный контейнер. - Поддержка нестандартного CSS-свойства
-moz-osx-font-smoothing, значениеgrayscaleкоторого позволяет достичь результата, аналогичного достигаемому в WebKit-браузерах с помощью нестандартного свойства-webkit-font-smoothing: antialiased, предназначенного для управления сглаживанием текста в Mac OS X и позволяющего переключаться между субпиксельным сглаживанием и сглаживанием оттенками основного цвета или отключать сглаживание полностью на уровне отдельных HTML-элементов. Свойство доступно только в версиях Firefox для Mac OS X. - Новое нестандартное свойство
-moz-os-versionпри его использовании в составе Media Queries призвано облегчить применение разных стилей в разных операционных системах для разработчиков дополнений для Firefox (для обычных веб-страниц эта возможность закономерно недоступна). На данный момент поддерживается только Windows:windows-xp,windows-vista,windows-win7,windows-win8.
JavaScript
-
Поддержка ряда новых JavaScript-возможностей из состава ECMAScript 6 (Harmony):
-
Метод
Array.of()функционально аналогичен конструкторуnew Array()и его краткой форме[], но имеет некоторые отличия:- в отличие от конструктора
new Array(), ведущего себя по-разному в зависимости от количества аргументов,Array.of()всегда возвращает массив, содержащий переданные аргументы, сколько бы их ни было; - объект
Array.ofможно при необходимости передать в качестве аргумента в какую-либо функцию; - исключается случайное появление пустых элементов в результирующем массиве вследствие пропуска элементов при его создании — пустой аргумент при вызове метода является синтаксической ошибкой.
Метод
Array.from(), который изначально планировалось реализовать параллельно и который предназначен для лёгкого и интуитивного преобразования любого массивоподобного объекта в реальный массив (объектArray), к сожалению, пока не реализован. - в отличие от конструктора
- Методы
parseInt()иparseFloat()объектаNumber, являющиеся псевдонимами одноимённых глобальных функций. - Метод
forEach()для удобного обхода элементов, содержащихся в объектахMapиSet. Поддержка объектовMapиSetбыла добавлена в Firefox 13. - Новые методы объекта
Math:log10(),log2(),log1p(),expm1(),cosh(),sinh(),tanh(),acosh(),asinh(),atanh(),trunc(),sign()иcbrt(). - Поддержка двоичных и восьмеричных целочисленных литералов вида
0b10101010,0B1010,0o777,0O237. - Новая константа
Number.EPSILONсодержит минимальное число в машинном представлении, при сложении которого с числом 1 результат не будет равен 1.
-
- Метод
toBlob()объектаHTMLCanvasElementтеперь принимает 3-й аргумент, позволяющий явно указать нужную степень JPEG-сжатия.
Прочее
- В панели «Сеть» Веб-консоли теперь можно изменить и повторно отправить отдельный взятый запрос.
- Устранена проблема, проявлявшаяся в том, что некоторые из миниатюрных скриншотов часто посещаемых сайтов в пустой новой вкладке иногда отсутствовали.
Firefox 24

Некоторые интересные новшества предыдущей — 24-й — версии Firefox, самостоятельный обзор которой в блоге не публиковался:
- Устранён надоедливый баг, появившийся в Firefox 14 и заключавшийся в автоматическом добавлении www-префикса к адресу, выбранному с помощью функции автодополнения (autofill, inline autocomplete) и при автодополнении www-префикса не содержавшего.
- Значения
-moz-zoom-inи-moz-zoom-outCSS-свойстваcursor, изначально являвшиеся нестандартным расширением Firefox и позднее включённые в спецификацию CSS3 UI, теперь поддерживаются без префикса:zoom-inиzoom-out. - Метод
element.classList.toggle()теперь поддерживает условное добавление или удаление класса в зависимости от булевой истинности необязательного второго аргумента. Например, вызовelement.classList.toggle('foo', true)добавит класс, аelement.classList.toggle('bar', false)— удалит. - Новые JavaScript-конструкторы
Range(),Text(),Comment(),DocumentFragment()позволяют создавать соответствующие DOM-объекты напрямую, без вызова методов-фабрикcreate*()объектаdocument. Например,(new Text)равнозначноdocument.createTextNode(). - Новый JavaScript-метод
String.prototype.repeat(), функционально аналогичный PHP-функцииstr_repeat(), возвращает строку, содержащую заданную строку, повторённую заданное количество раз. - DOM-метод
ChildNode.remove()удаляет непосредственно DOM-узел, по отношению к которому вызван, без необходимости прибегать к излишне многословным вызовам видаChildNode.parentNode.removeChild(ChildNode). - Для HTML-элемента
TRACK, позволяющего привязать к элементамAUDIOиVIDEOдополнительную информацию (например, субтитры) и пока в Firefox не реализованного, реализована экспериментальная поддержка JavaScript-интерфейсовHTMLTrackElement,TextTrack,TextTrackCue,TextTrackListиTextTrackCueList, по умолчанию отключённая и включаемаяabout:config-настройкойmedia.webvtt.enabled. - Экспериментальная поддержка JavaScript-интерфейса
Gamepadи методаNavigator.getGamepads, по умолчанию отключённая и включаемаяabout:config-настройкойdom.gamepad.enabled. - Реализована «ленивая» генерация байт-кода: байт-код каждой JavaScript-функции теперь генерируется только при первом реальном её вызове. С учётом того, что в настоящее время широко используются универсальные библиотеки типа jQuery, многие функции которых никогда не вызываются, это снижает потребление памяти примерно на 5% и делает браузер более отзывчивым благодаря снижению нагрузки на «сборщик мусора» (GC, Garbage Collector).
- Улучшена отрисовка векторных изображений в формате SVG.
- Поддержка вертикальной синхронизации (vsync) в Windows.
- Сделана более отзывчивой прокрутка страниц, содержащих большое количество изображений.
- Поддержка воспроизведения аудиофайлов в формате MP3 в Windows XP средствами DirectShow, изначально планировавшаяся на Firefox 24, отложена до Firefox 26.
- На основе Firefox 24 создана очередная версия браузера с увеличенным периодом поддержки (ESR) для корпоративных пользователей.
- Незамеченное ранее: в Firefox 22 поля форм типа
fileнаконец-то стали корректно обрабатывать щелчок на связанном с ним элементеLABEL, что, в частности, открывает возможность кроссбраузерной реализации нестандартного оформления таких полей без необходимости прибегать к ухищрениям типа явного вызова обработчика щелчка средствами JavaScript.
Кстати, по некоторым данным, Mozilla рассматривает возможность перехода с 6-недельного цикла разработки на 9-недельный, что, вероятно, поспособствует увеличению количества и/или значимости новшеств в каждой новой версии.
См. также: