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
. - Поддержка значения
local
CSS-свойства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-out
CSS-свойства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-недельный, что, вероятно, поспособствует увеличению количества и/или значимости новшеств в каждой новой версии.
См. также: