Веб_броузер – это универсальная платформа для исполнения приложений, а Ja_ vaScript – язык программирования, на котором эти приложения разрабатыва_ ются. К счастью, язык JavaScript относится к разряду стандартизованных и ши_ роко поддерживаемых – все современные веб_броузеры поддерживают стандарт ECMAScript v3. Чего, впрочем, нельзя сказать о самой платформе. Конечно, все веб_броузеры могут отображать HTML_документы, но они отличаются друг от друга полнотой поддержки других стандартов, таких как CSS и DOM. И хотя все современные броузеры включают совместимые реализации интерпретатора Ja_ vaScript, они имеют отличия в прикладном программном интерфейсе (Applicati_ on Programming Interface, API), доступном для клиентского JavaScript_кода.
Проблемы совместимости – это просто неприятный факт из жизни программи_ стов, использующих клиентский язык JavaScript. Разрабатываемый и распро_ страняемый вами JavaScript_код может исполняться на различных версиях раз_ ных броузеров и в разных операционных системах. Рассмотрим наиболее часто встречающиеся комбинации операционных систем и броузеров: Internet Explorer в Windows и Mac OS1; Firefox для Windows, Mac OS и Linux; Safari для Mac OS и Opera для Windows, Mac OS и Linux. Если у вас появится желание реализовать поддержку всех этих броузеров, плюс две предыдущие версии каждого из них, умножьте эти девять комбинаций броузера и ОС на три, всего получится 27 ком_ бинаций броузера, версии и ОС. Единственный способ убедиться, что ваши веб_ приложения будут безошибочно исполняться в любой из 27 комбинаций, – прове_ рить каждую комбинацию. Это титанический труд, но на практике тестирование часто производится пользователями уже после развертывания приложения.
Прежде чем в процессе разработки приложения перейти к фазе тестирования, необходимо написать программный код. Поэтому при программировании на языке JavaScript знание существующих несовместимостей в броузерах является чрезвычайно важным для создания совместимого программного кода. К сожале_ нию, составление списка всех известных несовместимостей между производите_ лями, версиями и платформами является непомерно сложной задачей. Это дале_ ко выходит за рамки темы данной книги и моих собственных познаний, до сих пор еще ни разу не предпринимались попытки разработать полномасштабные наборы тестов для клиентского JavaScript. Некоторую информацию о совмести_ мости броузеров можно найти в Интернете, причем два сайта я нахожу наиболее полезными:
http://www.quirksmode.org/dom/
Это сайт независимого веб_разработчика Питера_Пауля Коха (Piter_Paul Koch). Его таблицы совместимости с DOM отражают уровень соответствия различ_ ных броузеров стандартам W3C DOM.
http://webdevout.net/browser_support.php
Это сайт Дэвида Хаммонда (David Hammond). Он напоминает сайт quirksmo' de.org, но здесь вы найдете более полные и более свежие (на момент написа_
1 Версия IE для Mac OS постепенно сходит со сцены, и это благо, поскольку данный броузер заметно отличается от версии IE для Windows.
274 Глава 13. JavaScript в веб*броузерах
ния этих строк) таблицы совместимости. В дополнение к совместимости с DOM здесь также приводятся оценки соответствия броузеров стандартам HTML, CSS и ECMAScript.
Конечно, выяснить о существовании несовместимости – это лишь первый шаг. В следующих подразделах демонстрируются приемы, используемые для обхода несовместимостей, с которыми вы можете столкнуться.