Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

Обратите внимание, что последние три сайта сопровождаются конкретными людьми. Несмотря на то что эти люди являются опытными разработчиками на клиентском JavaScript, эти сайты могут содержать не самую последнюю информацию.

Конечно, понимание проблем несовместимости между броузерами - это только первый шаг. Далее необходимо решить, как обращаться с этими проблемами. Одна из стратегий заключается в том, чтобы ограничиться использованием только тех особенностей, которые одинаково хорошо реализованы (или легко имитируются) во всех броузерах, поддержку которых вам требуется обеспечить. На эту стратегию опирается веб-сайт «Когда я смогу воспользоваться...», упомянутый

выше 0http://a.deveria.com/caniuse): здесь перечислены особенности, ставшие пригодными к широкому использованию после того, как сократилась доля броузера IE6 и он перестал занимать ведущее положение на рынке. В следующих подраз» делах описывается несколько менее пассивных стратегий, которые можно использовать для обхода несовместимостей на стороне клиента.

Несколько слов о «текущих броузерах»

Тема клиентского JavaScript изменчива, что стало особенно заметно с появлением ES5 и HTML5. Поскольку платформа развивается очень быстро, я не буду ограничиваться рекомендациями, касающимися конкретных версий тех или иных броузеров: любые такие рекомендации устареют задолго до того, как появится новое издание этой книги. Поэтому вы часто будете видеть, что я специально подстраховываюсь, используя достаточно расплывчатую фразу «все текущие броузеры» (или иногда «все текущие броузеры, кроме IE»). Чтобы добавить конкретики, замечу, что на тот момент, когда я писал эту главу, текущими броузерами (здесь не имеются в виду бета-версии) были:

• Internet Explorer 8

• Firefox 3.6

• Safari 5

• Chrome 5

• Opera 10.10

Когда эта книга поступит в продажу, текущими броузерами, скорее всего, будут: Internet Explorer 9, Firefox 4, Safari 5, Chrome 11 и Opera 11.

Нет никаких гарантий, что каждое сделанное в книге утверждение о «текущих броузерах» в равной степени будет верным для каждого из этих конкретных броузеров. Но вы хотя бы будете знать, какие броузеры считались текущими, когда писалась эта книга.

В пятом издании этой книги вместо выражения «текущие броузеры» использовалось выражение «современные броузеры». То издание было опубликовано в 2006 году, когда текущими броузерами были Firefox 1.5, IE6, Safari 2 и Opera 8.5 (броузер Chrome, созданный компанией Google, тогда еще не существовал). Любые ссылки на «современные броузеры», оставшиеся в этой книге, теперь можно интерпретировать как «все броузеры», потому что версии, более старые, чем эти, практически вышли из употребления.

Многие новейшие особенности клиентского JavaScript, описываемые в этой книге (в частности, в главе 22), реализованы пока не во всех броузерах. Особенности, которые я выбрал для описания в этом издании, - это особенности, для которых процесс стандартизации еще не завершен, но они уже реализованы как минимум в одном выпущенном в свет броузере и находятся в разработке, по крайней мере, еще в одном броузере и, скорее всего, будут приняты всеми производителями броузеров (возможно, за исключением Microsoft).

13.4.1. Библиотеки обеспечения совместимости

Один из самых простых способов избавиться от проблемы несовместимости заключается в использовании библиотек, реализующих обходные решения. Рассмотрим в качестве примера элемент

<canvas>,
предназначенный для создания графических изображений на стороне клиента (эта тема обсуждается в главе 21). Броузер IE является единственным текущим броузером, не поддерживающим эту особенность. Однако он поддерживает собственный, малоизвестный язык создания графических изображений на стороне клиента, который называется VML, с помощью которого можно было бы имитировать действие элемента
<canvas>.
Открытым проектом «explorercanvas» была выпущена библиотека, реализующая эту имитацию: достаточно подключить к веб-странице единственный файл excanvas.js с программным кодом на языке JavaScript, и броузер IE будет вести себя так, как если бы он поддерживал элемент <canvas>.

Библиотека excanvas.js может служить ярким примером библиотеки обеспечения совместимости. Точно так же можно написать другие библиотеки, реализующие конкретные особенности. Методы массивов, введенные стандартом ES5 (раздел 7.9), такие как

forEach, map
и
reduce,
с успехом можно реализовать в ES3, и добавляя соответствующую библиотеку к страницам, можно получить возможность использовать эти мощные методы как часть базовой платформы любого броузера.

Однако иногда невозможно создать полноценную (или эффективную) реализацию особенности в броузерах, не поддерживающих ее. Как уже упоминалось, IE - единственный броузер, который не реализует стандартный API обработки событий, включая метод

addEventListener
регистрации обработчиков. Броузер IE поддерживает похожий метод с именем
attachEvent
. Однако метод
attachEvent
не такой мощный, как
addEventListener,
и в действительности не существует очевидного способа реализовать все стандартные методы на основе возможностей, предоставляемых броузером IE. Вместо этого разработчики иногда определяют компромиссный метод обработки событий - часто давая ему имя
addEvent
– который переносимым способом может использовать либо
addEventListener,
либо
attachEvent.
Затем они пишут свой программный код, использующий метод
addEvent
вместо
addEventListener
или
attachEvent.

На деле многие веб-разработчики в своих веб-страницах используют фреймворки на языке JavaScript, такие как jQuery (описывается в главе 19). Одна из функций, которая делает эти фреймворки такими необходимыми, - определение нового клиентского прикладного интерфейса, совместимого со всеми броузерами. В jQuery, например, регистрация обработчиков событий выполняется с помощью метода

bind
. Если вы начнете использовать jQuery во всех своих разработках, вам никогда не придется задумываться о несовместимости методов
addEventListener
и
attachEvent.
Подробнее о клиентских фреймворках рассказыватся в разделе 13.7.

13.4.2. Классификация броузеров

Классификация броузеров - это прием тестирования и оценки качества, введенный и отстаиваемой компанией Yahoo!, который привносит определенную долю здравомыслия в иначе неуправляемое разрастание вариантов броузеров разных версий от разных производителей и для разных операционных систем. В двух словах, классификация возможностей броузеров подразумевает выделение на основе тестирования броузеров категории «А», которые обеспечивают полную поддержку всех возможностей, и менее мощных броузеров категории «С». Броузеры категории «А» получают полнофункциональные веб-страницы, а броузеры катетгории «С» - минимальные HTML-версии страниц, в которых не используются сценарии JavaScript и каскадные таблицы стилей CSS. Броузеры, которые не могут быть отнесены к категории «А» или «С», попадают в категорию «X»: обычно это совершенно новые или особенно редкие броузеры. Считается, что броузеры этой категории обеспечивают полную поддержку всех возможностей, и они получают полнофункциональные веб-страницы, однако официально они не поддерживаются и не тестируются.

Подробности о системе классификации возможностей броузеров, используемой компанией Yahoo!, можно найти на страницеНа этой же странице приводится текущий список броузеров, включенных компанией Yahoo! в категории «А» и «С» (этот список обновляется ежеквартально). Даже если вы не собираетесь использовать прием классификации броузеров, список броузеров категории «А» может пригодиться для определения, какие броузеры являются текущими и занимают значительную долю рынка.

Поделиться:
Популярные книги

Первый среди равных

Бор Жорж
1. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных

Кодекс Императора III

Сапфир Олег
3. Кодекс Императора
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Императора III

Изгой

Майерс Александр
2. Династия
Фантастика:
фэнтези
попаданцы
рпг
аниме
5.00
рейтинг книги
Изгой

Древесный маг Орловского княжества 6

Павлов Игорь Васильевич
6. Орловское княжество
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Древесный маг Орловского княжества 6

Потомок бога

Решетов Евгений Валерьевич
1. Локки
Фантастика:
попаданцы
альтернативная история
аниме
сказочная фантастика
5.00
рейтинг книги
Потомок бога

Роза ветров

Кас Маркус
6. Артефактор
Фантастика:
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Роза ветров

Газлайтер. Том 15

Володин Григорий Григорьевич
15. История Телепата
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Газлайтер. Том 15

Пламенев. Книга 3-7

Карелин Сергей Витальевич
Пламенев
Фантастика:
аниме
уся
фэнтези
сянься
5.00
рейтинг книги
Пламенев. Книга 3-7

#Бояръ-Аниме. Газлайтер. Том 24

Володин Григорий Григорьевич
24. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 24

Возвращение

Кораблев Родион
5. Другая сторона
Фантастика:
боевая фантастика
6.23
рейтинг книги
Возвращение

Ангел тьмы

Шелдон Сидни
Детективы:
полицейские детективы
8.33
рейтинг книги
Ангел тьмы

Ефрейтор. Назад в СССР. Книга 2

Гаусс Максим
2. Второй шанс
Фантастика:
попаданцы
альтернативная история
7.00
рейтинг книги
Ефрейтор. Назад в СССР. Книга 2

Тринадцатый IV

NikL
4. Видящий смерть
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Тринадцатый IV

Я – Легенда 2: геном хищника

Гарцевич Евгений Александрович
2. Я - Легенда!
Фантастика:
боевая фантастика
рпг
фантастика: прочее
попаданцы
5.00
рейтинг книги
Я – Легенда 2: геном хищника