Firefox 3.5
2009-07-11

30 июня 2009 г. выпущена финальная версия, пожалуй, лучшего на сегодня браузера — Firefox 3.5. Ей традиционно стала последняя стабильная RC-версия — RC3.
Свежий Firefox предлагает ряд новых возможностей, которые, с одной стороны, интересны в первую очередь для веб-разработчика, а с другой — полезны для пользователя.
- Новый движок интерпретации 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-функциях. - Поддержка загрузки произвольных шрифтов (TrueType и OpenType), заданных на уровне CSS.
- Поддержка JavaScript-методов
querySelectorиquerySelectorAllиз чернового варианта спецификации Selectors API, позволяющих осуществлять выборку элементов из DOM-дерева с помощью наглядных и компактных CSS-селекторов. Ранее существовали лишь реализации на чистом JavaScript в рамках библиотек типа jQuery, в то время как встроенная в браузер реализация работает многократно быстрее. Уместно заметить, что возможности такой выборки закономерно ограничены уровнем поддержки CSS-селекторов в конкретном браузере. - Поддержка удобных JavaScript-методов для доступа к элементам (в противоположность любым узлам — например, текстовым):
children,childElementCount,firstElementChild,lastElementChild,nextElementSibling,previousElementSibling. Ранее для этого приходилось перебирать узлы стандартными средствами DOM и проверять каждый из них на предмет того, является ли он элементом. Новые методы (помимо банального удобства) работают, несомненно, гораздо быстрее. - Поддержка интереснейшего механизма CSS media queries, дающего возможность назначать индивидуальные таблицы стилей в зависимости от характеристик устройства вывода — например, доступной глубины цвета экрана, его размера, размера окна браузера и проч.
- Поддержка так называемых web workers — запуска и работы определённых (не модифицирующих DOM-дерево) JavaScript-функций в фоновом режиме — без влияния на отзывчивость веб-приложения в целом.
- Поддержка 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. Тем не менее, в качестве причины называются именно проблемы лицензионного характера. Впрочем, так или иначе, это не делает появление возможности воспроизведения медиафайлов встроенными средствами браузера менее знаковым событием. - Поддержка 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, позволяющего, например, поворачивать элемент вокруг воображаемой оси, перпендикулярной экрану. - Включена поддержка цветовой коррекции ICC для изображений, содержащих соответствующую служебную информацию.
- Устранена ошибка, из-за которой при обновлении страницы нажатием клавиши F5 не запоминалась позиция прокрутки до обновления страницы при наличии HTTP-заголовка ответа сервера
Cache-Control: no-store. (При полном принудительном обновлении нажатием CTRL+F5 позиция, увы, по-прежнему сбрасывается.) - Реализовано автодополнение меток при добавлении закладок. К сожалению, в случае совпадения набираемой метки с уже существующей сбрасывается позиция каретки в поле ввода меток.
- Новый режим работы «Приватный просмотр» (Private Browsing), временно отключающий запись истории посещений, cookie и проч. Ранее аналогичная функциональность достигалась использованием расширений типа Stealther.
- Интересная функция DNS prefetching, ускоряющая переход по ссылкам на странице путём автоматического получения IP-адресов соответствующих сайтов заранее, ещё до реального перехода пользователя по ссылкам на просматриваемой странице и исключая, таким образом, задержки отклика DNS-серверов при действительном переходе по ссылкам.