Введение

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

Предыстория

История кроссбраузерности тесно связана с историей "войн браузеров" конца 1990-х годов между Netscape Navigator и Microsoft Internet Explorer, а также с историей JavaScript и JScript – первых скриптовых языков, реализованных в веб-браузерах. Netscape Navigator был самым популярным веб-браузером того времени, а Microsoft лицензировала Mosaic для создания Internet Explorer 1.0. В последующие несколько лет новые версии Netscape Navigator и Internet Explorer выходили стремительно. Из-за острой конкуренции на рынке веб-браузеров разработка этих браузеров шла быстрыми темпами, и новые функции добавлялись без согласования между разработчиками. Приоритет часто отдавался внедрению новых функций, а не исправлению ошибок, что приводило к нестабильной работе браузеров, непоследовательному соблюдению веб-стандартов, частым сбоям и многочисленным уязвимостям в системе безопасности.

Создание W3C и стандартизация Web

Консорциум World Wide Web (W3C), основанный в 1994 году для продвижения открытых стандартов для World Wide Web, объединил Netscape и Microsoft с другими компаниями для разработки стандарта для языков сценариев браузера под названием ECMAScript. Первая версия стандарта была опубликована в 1997 году. Последующие выпуски JavaScript и JScript реализовывали стандарт ECMAScript для повышения кросс-браузерной совместимости. После стандартизации ECMAScript, W3C приступил к работе над стандартизацией Document Object Model (DOM) – способа представления и взаимодействия с объектами в HTML, XHTML и XML документах. DOM Level 0 и DOM Level 1 были представлены в 1996 и 1997 годах. Браузеры реализовали лишь ограниченную поддержку этих уровней, в результате чего не соответствующие стандартам браузеры, такие как Internet Explorer 4.x и Netscape 4.x, оставались широко используемыми вплоть до 2000 года. Стандартизация DOM стала популярной с появлением DOM Level 2, опубликованного в 2000 году. Он представил функцию "getElementById", а также модель событий и поддержку XML-пространств имен и CSS. DOM Level 3, текущая версия спецификации DOM, опубликованная в апреле 2004 года, добавила поддержку XPath и обработку событий клавиатуры, а также интерфейс для сериализации документов в XML. К 2005 году большая часть W3C DOM хорошо поддерживалась распространенными браузерами с поддержкой ECMAScript, включая Microsoft Internet Explorer, Opera, Safari и браузеры на основе Gecko (такие как Firefox, SeaMonkey и Camino).

21 век

В начале века такие методы, как определение браузера, считались непригодными для кросс-браузерной разработки. Термин "многобраузерный" был введен для описания приложений, которые полагались на определение браузера или делали иные некорректные предположения об окружении выполнения, которое в то время почти всегда представляло собой веб-браузеры. Термин "кросс-браузерный" приобрел свое современное значение в этот период, поскольку приложения, которые когда-то работали в Internet Explorer 4 и Netscape Navigator 4, но впоследствии стали неработоспособными в современных браузерах, нельзя было разумно назвать "кросс-браузерными". В разговорной речи такие многобраузерные приложения, а также фреймворки и библиотеки до сих пор называют кросс-браузерными.