Что же на самом деле включает в себя HTML5? Даже при внимательном чтении спецификации вы не обнаружите в ней упоминаний о некоторых из средств, описанных в данной книге. Например, в ней отсутствуют разделы HTML5 Geolocation и Web Workers.
Получается, будто авторы обманывают вас или вводят в заблуждение? Вовсе нет! Первоначально многие разделы проекта HTML5 (например, Web Storage и Canvas 2D) были отдельными разделами спецификации HTML5, но затем, стремясь обеспечить цельность спецификации, их отнесли в документам других стандартов. Было решено, что целесообразно сначала обсудить и отредактировать положения, касающиеся таких средств, по отдельности и только потом включить их в официальные спецификации. Это позволяет избежать ситуаций, в которых наличие одного незначительного спорного элемента разметки тормозит представление всей спецификации.
Эксперты в конкретных областях могут обмениваться своими мнениями с помощью электронных списков рассылки, имея возможность без каких-либо затруднений обсуждать то или иное средство, не тратя время на лишние разговоры. Однако в среде специалистов при ссылках на спецификацию HTML5 часто подразумевают ее первоначальный вариант, включающий, в частности, Geolocation API. Поэтому воспринимайте термин "HTML5" как "зонтичный", т.е. такой, который охватывает как основной набор элементов разметки, так и целый ряд новых программных интерфейсов с впечатляющими возможностями. На момент написания данной книги спецификация HTML5 состояла из следующих частей:
- элемент Canvas (2D и 3D);
- передача сообщений между документами;
- спецификация Geolocation API;
- MathML;
- Microdata;
- события, генерируемые сервером;
- Scalable Vector Graphics (SVG);
- программный интерфейс и протокол WebSocket;
- концепция веб-источника;
- веб-хранилища;
- спецификация Web SQL Database;
- потоки Web Workers;
- XMLHttpRequest Level 2.
Как нетрудно заметить, многие из программных интерфейсов, рассматриваемых в данной книге, входят в этот список. Каковы были принципы отбора спецификаций для нашего рассмотрения? Мы выбрали те из них, которые можно считать в той или иной мере близкими к завершению. Переносимость? В той или иной степени все эти интерфейсы доступны в ряде браузеров. Остальные (менее готовые) на данном этапе либо могут работать в какой-то одной конкретной версии браузера, либо пока что существуют лишь в виде идей.
В данной книге представлен современный (на момент написания книги) обзор предоставляемой браузерами поддержки, доступной для каждого из обсуждаемых нами средств HTML5. Однако, о чем бы мы вам ни рассказали, со временем это также потребует уточнения, поскольку объект нашего рассмотрения весьма изменчив. Вместе с тем, не стоит зря беспокоиться. Существуют великолепные сетевые ресурсы, с помощью которых вы сможете регулярно проверять текущее (а также будущее) состояние браузерной поддержки. На сайте www.caniuse.com предоставляется исчерпывающий перечень доступных возможностей с указанием версий различных браузеров, в которых они поддерживаются, а на сайте www.html5test.com вы можете протестировать, какие средства HTML5 поддерживаются вашим браузером.
Заметим, что в книге не обсуждаются всевозможные обходные пути, основанные на эмуляции тех или иных средств, используя которые, можно добиться выполнения приложений HTML5 на устаревших браузерах. Вместо этого мы сосредоточимся главным образом на спецификации HTML5 и способах ее использования. Для каждого программного интерфейса будут приведены примеры кода, позволяющие проверить его доступность. Вместо того чтобы определять тип пользовательского агента, что не всегда можно сделать достаточно надежно, мы будем использовать обнаружение самих средств. Для этой цели также можно использовать Modemizr— библиотеку JavaScript, предоставляющую улучшенные возможности обнаружения средств HTML5 и CSS3. Мы настоятельно рекомендуем использовать библиотеку Modemizr в своих приложениях, поскольку в ней вы найдете наилучший инструментарий, предназначенный для этой цели.
Еще об HTML
Говорит Фрэнк: "Привет, меня зовут Фрэнк, мое хобби — рисование. Одна из первых демонстраций возможностей элемента canvas, которую мне довелось увидеть, представляла собой простейшее графическое приложение, имитирующее пользовательский интерфейс Microsoft Paint. И хотя по своему техническому уровню приложение на десятки лет отставало от современных цифровых графических программ и (по состоянию на тот момент) могло запускаться лишь на некоторых из существующих в то время браузеров, его пример заставил меня всерьез задуматься над тем, какие широкие возможности за ним скрываются. Как правило, когда у меня возникает необходимость в создании цифровых графических изображений, я использую настольные программы, установленные на локальном компьютере. Хотя некоторые из этих программ действительно великолепны, им не хватает тех возможностей, благодаря которым веб- приложения завоевали необычайную популярность. Проще говоря, они отсоединены от внешнего мира. До сих пор совместное использование цифровых изображений предполагало их экспорт из графического приложения и выгрузку в Интернет. Об организации совместной работы над рисунком или внесении правок на "живом" холсте не могло быть и речи. Приложения HTML5 позволяют сократить экспортный цикл и перенести в сетевую среду весь творческий процесс, а не только готовые изображения.
Круг приложений, которые не могут быть реализованы в HTML5, непрерывно сужается. Если говорить об обработке текста, то Интернет уже является двухсторонней коммуникационной средой для обмена текстовой информацией. Доступны модификации приложений для обработки текстов, предназначенные специально для Интернета. Однако графические приложения, такие как программы для рисования, видеомонтажа или ЗО-моделирования, только начинают появляться в этой области. Сейчас мы можем создавать замечательное программное обеспечение, предназначенное для работы с изображениями, музыкой, фильмами и т.д. К тому же оно будет работать как в Интернете, так и автономно— универсальная платформа с необычайно широкими возможностями, для которой главной "ареной действий" является Интернет."