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

30 июня 2009 г. выпущена финальная версия, пожалуй, лучшего на сегодня браузера — Firefox 3.5. Ей традиционно стала последняя стабильная RC-версия — RC3.
Свежий Firefox предлагает ряд новых возможностей, которые, с одной стороны, интересны в первую очередь для веб-разработчика, а с другой — полезны для пользователя.
CSS, HTML
- Поддержка загрузки произвольных шрифтов (TrueType и OpenType), заданных на уровне CSS.
- Поддержка интереснейшего механизма CSS media queries, дающего возможность назначать индивидуальные таблицы стилей в зависимости от характеристик устройства вывода — например, доступной глубины цвета экрана, его размера, размера окна браузера и проч.
- Поддержка CSS-свойств
text-shadow
и-moz-box-shadow
, добавляющих тень к символам текста и целиком элементу соответственно. - От экспериментального CSS-свойства
-moz-opacity
, отвечающего за степень прозрачности элемента, полностью отказались в пользу стандартногоopacity
. (Вплоть до Firefox 3 поддерживались оба свойства.) К слову, поддержки этого полезнейшего свойства до сих пор нет в IE — даже в недавно вышедшем Internet Explorer 8 для аналогичной цели по-прежнему предлагается проприетарный и сопряжённый с некоторыми проблемами «костыль»filter:alpha(opacity=xx)
, в то время как стандартное CSS-свойствоopacity
поддерживается уже во всех остальных браузерах: Firefox, Opera, Safari, Chrome. - Поддержка экспериментального CSS-свойства
-moz-transform
, позволяющего, например, поворачивать элемент вокруг воображаемой оси, перпендикулярной экрану. - Поддержка HTML-элементов
audio
иvideo
из текущей черновой спецификации HTML 5, позволяющих вставлять на веб-страницы звук и видео и воспроизводить их встроенными средствами браузера без привлечения сторонних средств типа Flash. В рамках элементаaudio
поддерживаются аудиоролики в формате Ogg Vorbis, а для использования с элементомvideo
выбран открытый формат Ogg Theora. Нельзя не выразить сожаление по поводу отсутствия поддержки современного, высококачественного и уже ставшего стандартом де-факто сжатия видео H.264 (в стандартном контейнере MP4 или не менее широко используемом и при этом открытом MKV). Поддержка этого формата (в контейнере MP4) уже есть в Flash Player начиная с версии 9.0.115, выпущенной в конце 2007 г. Существуют также открытые реализации как программ для кодирования — x264, так и декодеров — например, FFDShow Tryouts. Тем не менее, в качестве причины называются именно проблемы лицензионного характера. Впрочем, так или иначе, это не делает появление возможности воспроизведения медиафайлов встроенными средствами браузера менее знаковым событием.
JavaScript, DOM
- Новый движок интерпретации JavaScript — TraceMonkey, главной отличительной особенностью которого является применение так называемой JIT-компиляции, обеспечивающей существенное — вплоть до 20-кратного — повышение скорости исполнения JavaScript-сценариев. По тестам, TraceMonkey работает быстрее, чем движок V8, используемый в браузере Google Chrome. К сожалению, по умолчанию JIT-компиляция включена только для скриптов в составе веб-страниц, а скрипты графического интерфейса и расширений ей не подвергаются, однако можно включить её вручную, установив в значение
true
параметрjavascript.options.jit.chrome
в окне настроек, доступном по псевдоадресуabout:config
. - Встроенная поддержка кодирования и декодирования данных в формате JSON с использованием методов
parse
иstringify
нового стандартного объектаJSON
. По сравнению с простым использованием стандартной JavaScript-функцииeval
, предназначенной для интерпретации произвольного JavaScript-кода в виде строки, это позволяет безопасно декодировать объекты JSON (декодируются данные, но не исполняемые скрипты, потенциально деструктивные при получении из ненадёжных источников), работает почти втрое быстрее, чем при использованииeval
, и во много раз быстрее, чем существующие реализации на чистом JavaScript. - Поддержка новых методов JavaScript-объекта String:
trim
,trimLeft
иtrimRight
, работающих аналогично чрезвычайно удобным и часто используемым функциямtrim
,ltrim
иrtrim
из популярного серверного скриптового языка PHP и предназначенных для удаления всех пробельных символов (пробел, табуляция, перевод строки и проч.) по краям переданной строки. К сожалению, в отличие от соответствующих функций PHP, JavaScript-функции в данный момент ориентированы только на пробельные символы и не поддерживают удаление произвольных символов, как это предусмотрено в соответствующих PHP-функциях. - Поддержка JavaScript-методов
querySelector
иquerySelectorAll
из чернового варианта спецификации Selectors API, позволяющих осуществлять выборку элементов из DOM-дерева с помощью наглядных и компактных CSS-селекторов. Ранее существовали лишь реализации на чистом JavaScript в рамках библиотек типа jQuery, в то время как встроенная в браузер реализация работает многократно быстрее. Уместно заметить, что возможности такой выборки закономерно ограничены уровнем поддержки CSS-селекторов в конкретном браузере. - Поддержка удобных JavaScript-методов для доступа к элементам (в противоположность любым узлам — например, текстовым):
children
,childElementCount
,firstElementChild
,lastElementChild
,nextElementSibling
,previousElementSibling
. Ранее для этого приходилось перебирать узлы стандартными средствами DOM и проверять каждый из них на предмет того, является ли он элементом. Новые методы (помимо банального удобства) работают, несомненно, гораздо быстрее. - Поддержка так называемых web workers — запуска и работы определённых (не модифицирующих DOM-дерево) JavaScript-функций в фоновом режиме — без влияния на отзывчивость веб-приложения в целом.
Прочее
- Включена поддержка цветовой коррекции ICC для изображений, содержащих соответствующую служебную информацию.
- Устранена ошибка, из-за которой при обновлении страницы нажатием клавиши F5 не запоминалась позиция прокрутки до обновления страницы при наличии HTTP-заголовка ответа сервера
Cache-Control: no-store
. (При полном принудительном обновлении нажатием CTRL+F5 позиция, увы, по-прежнему сбрасывается.) - Реализовано автодополнение меток при добавлении закладок. К сожалению, в случае совпадения набираемой метки с уже существующей сбрасывается позиция каретки в поле ввода меток.
- Новый режим работы «Приватный просмотр» (Private Browsing), временно отключающий запись истории посещений, cookie и проч. Ранее аналогичная функциональность достигалась использованием расширений типа Stealther.
- Интересная функция DNS prefetching, ускоряющая переход по ссылкам на странице путём автоматического получения IP-адресов соответствующих сайтов заранее, ещё до реального перехода пользователя по ссылкам на просматриваемой странице и исключая, таким образом, задержки отклика DNS-серверов при действительном переходе по ссылкам.
P. S. Кстати, в Firefox есть возможность вставки на страницу отдельных файлов, загруженных с сайта в виде единого jar-/zip-архива. Такой способ экономии HTTP-запросов лишён недостатков CSS-спрайтов и обладает несравненно большей гибкостью (в архив можно поместить любые файлы, и нет необходимости объединять изображения разного размера в единый графический файл). Не хватает лишь широкой поддержки в остальных браузерах. ;-)