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

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

Жанры

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

13.4.3. Проверка особенностей

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

В следующих главах вы часто будете видеть, что та

или иная особенность проверяется снова и снова. Например, в главе 17 приводится программный код, который выглядит, как показано ниже:

if (element.addEventListener) { // Проверить наличие метода W3C перед вызовом

element.addEventListener(”keydown", handler, false);

element.addEventListener("keypress", handler, false);

}

else if (element.attachEvent) { // Проверить наличие метода IE перед вызовом

element.attachEvent("onkeydown", handler);

element.attachEvent("onkeypress", handler);

}

else { // В противном случае использовать универсальный прием

element.onkeydown = element.onkeypress = handler;

}

Самое главное, что дает проверка особенностей, - программный код, который не привязан к конкретным броузерам или их версиям. Этот прием работает со всеми броузерами, существующими ныне, и должен продолжить работать с будущими версиями броузеров независимо от того, какой набор особенностей они реализуют. Это означает, что производители броузеров должны определять свойства и методы, обладающие полной функциональностью. Если бы корпорация Microsoft определила метод

addEventListener
, реализовав спецификации W3C лишь частично, это привело бы к нарушениям работоспособности большого числа сценариев, в которых перед вызовом
addEventListener
реализован механизм проверки особенностей.

13.4.4. Режим совместимости и стандартный режим

Когда корпорация Microsoft выпустила броузер IE6, в него была добавлена поддержка некоторых стандартных особенностей CSS, которые не поддерживались в IE5. Однако чтобы обеспечить обратную совместимость с существующими вебстраницами, в нем было реализовано два режима отображения. В «стандартном режиме», или в «режиме совместимости с CSS», броузер следует стандартам CSS. В «режиме совместимости» броузер проявляет нестандартное поведение, свойственное версиям IE4 и IE5. Выбор режима отображения зависит от объявления D0CTYPE в начале HTML-файла. Страницы, вообще не имеющие объявления D0CTYPE и страницы с определенными объявлениями типа документа, типичными в эру использования IE5, отображаются в режиме совместимости. Страницы со строгими объявлениями типа документа (или, для совместимости снизу вверх, с нераспознаваемыми объявлениями типа документа) отображаются в стандартном режиме. Страницы с объявлением, определяемым стандартом HTML5 (

<! D0CTYPE html>
), отображаются в стандартном режиме во всех современных броузерах.

Такое различие между режимом совместимости и стандартным режимом прошло проверку временем. Новые версии IE по-прежнему реализуют его, как и другие современные броузеры, и существование этих двух режимов было узаконено спецификацией HTML5. Различия между режимом совместимости и стандартным режимом обычно имеют значение только для тех, кто пишет HTML-

и CSS-код. Однако иногда клиентским сценариям на языке JavaScript бывает необходимо определить, в каком режиме отображается документ. Определить режим отображения можно с помощью свойства
document.compatMode
. Если оно имеет значение «
CSSICompat
», документ отображается в стандартном режиме. Если оно имеет значение «
BackCompat
» (или
undefined
, если такое свойство вообще не существует), документ отображается в режиме совместимости. Все современные броузеры реализуют свойство
compatMode
, и оно стандартизовано спецификацией HTML5.

На практике необходимость проверять свойство

compatMode
возникает редко. Тем не менее в примере 15.8 демонстрируется один из случаев, когда эта проверка действительно необходима.

13.4.5. Проверка типа броузера

Методика проверки особенностей прекрасно подходит для определения поддерживаемых функциональных возможностей броузера. Ее можно использовать, например, чтобы выяснить, какая модель обработки событий поддерживается, W3C или IE. В то же время иногда может потребоваться обойти те или иные ошибки, свойственные конкретному типу броузеров, когда нет достаточно простого способа определить наличие этих ошибок. В этом случае бывает необходимо разработать программный код, который должен выполняться только в броузерах определенного производителя, определенного номера версии или в конкретной операционной системе (либо в некоторой комбинации всех трех признаков).

На стороне клиента сделать это можно с помощью объекта Navigator, о котором рассказывается в главе 14. Программный код, который определяет производителя и версию броузера, часто называют анализатором броузера (<browser sniffer) или анализатором клиента (<client sniffer). Простой анализатор такого типа приводится в примере 14.3. Методика определения типа клиента широко использовалась на ранних этапах развития Всемирной паутины, когда Netscape и 1Б имели серьезные отличия и были несовместимы. Ныне ситуация с совместимостью стабилизировалась, и анализ типа клиента утратил свою актуальность и проводится лишь в тех случаях, когда это действительно необходимо.

Примечательно, что определение типа клиента может быть выполнено также на стороне сервера, благодаря чему веб-сервер на основе строки идентификации броузера, которая передается серверу в заголовке User-Agent, может выяснить, какой JavaScript-код требуется отсылать.

13.4.6. Условные комментарии в Internet Explorer

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

В следующем примере демонстрируется, как выглядят условные комментарии в HTML. Примечательно, что вся хитрость заключается в комбинации символов, закрывающих комментарий.

<!—[if IE 6]>

Эти строки фактически находятся внутри HTML-комментария.

Они будут отображаться только в IE6.

<![endif]-->

<!—[if lte IE 7]>

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

Комментарии к «Евгению Онегину» Александра Пушкина

Набоков Владимир Владимирович
Документальная литература:
критика
5.00
рейтинг книги
Комментарии к «Евгению Онегину» Александра Пушкина

Дважды одаренный. Том III

Тарс Элиан
3. Дважды одаренный
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
юмористическое фэнтези
5.50
рейтинг книги
Дважды одаренный. Том III

Под-Московье

Калинкина Анна
Фантастика:
боевая фантастика
постапокалипсис
5.00
рейтинг книги
Под-Московье

Гримуар темного лорда VIII

Грехов Тимофей
8. Гримуар темного лорда
Фантастика:
боевая фантастика
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
5.25
рейтинг книги
Гримуар темного лорда VIII

Из истории русской, советской и постсоветской цензуры

Рейфман Павел Семенович
Научно-образовательная:
история
5.00
рейтинг книги
Из истории русской, советской и постсоветской цензуры

Точка Бифуркации XI

Смит Дейлор
11. ТБ
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Точка Бифуркации XI

50 знаменитых городов мира

Скляренко Валентина Марковна
31. 100 знаменитых
Научно-образовательная:
история
4.75
рейтинг книги
50 знаменитых городов мира

Барон диктует правила

Ренгач Евгений
4. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон диктует правила

Последний реанорец. Том XII – Часть II

Павлов Вел
12. Высшая Речь
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний реанорец. Том XII – Часть II

Под знаком Песца

Видум Инди
1. Под знаком Песца
Фантастика:
альтернативная история
аниме
5.00
рейтинг книги
Под знаком Песца

Дневники

Толстой Лев Николаевич
Проза:
русская классическая проза
6.83
рейтинг книги
Дневники

Искусство управления складом

Улыбина Юлия Николаевна
Деловая литература:
о бизнесе популярно
5.00
рейтинг книги
Искусство управления складом

Испытания

Мусаханов Валерий Яковлевич
Проза:
новелла
повесть
5.00
рейтинг книги
Испытания

Экспансия

Каменев Алекс
8. Цитадели гордыни
Фантастика:
героическая фантастика
боевая фантастика
5.00
рейтинг книги
Экспансия