Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

В прошлом объект

Navigator
обычно использовался сценариями для определений типа броузера - Internet Explorer или Netscape. Однако такой подход к определению типа броузера сопряжен с определенными проблемами, т. к. требует постоянного обновления с появлением новых броузеров или новых версий существующих броузеров. Ныне более предпочтительным считается метод на основе проверки функциональных возможностей (раздел 13.4.3). Вместо того чтобы делать какие-либо предположения о броузерах и их возможностях, гораздо проще прямо проверить наличие требуемой функциональной возможности (например, метода или свойства).

Однако иногда определение типа броузера может представлять определенную ценность. Один из таких случаев - возможность обойти ошибку, свойственную определенному типу броузера определенной версии. Объект

Navigator
имеет четыре свойства, предоставляющих информацию о версии работающего броузера, и вы можете использовать их для определения типа броузера:

appName

Название веб-броузера. В IE это строка «Microsoft Internet Explorer». В Firefox значением этого свойства является строка «Netscape». Для совместимости с существующими реализациями определения типа броузера значением этого свойства в других броузерах часто является строка «Netscape».

appVersion

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

appVersion
не определяется стандартом, поэтому невозможно организовать разбор этой строки способом, не зависящим от типа броузера.

userAgent

Строка, которую броузер посылает в http-заголовке USER-AGENT. Это свойство обычно содержит ту же информацию, что содержится в свойстве

appVersion
, а также может включать дополнительные сведения. Как и в случае со свойством
appVersion
, формат представления этой информации не стандартизован. Поскольку это свойство содержит больше информации, именно оно обычно используется для определения типа броузера.

platform

Строка, идентифицирующая операционную систему (и, возможно, аппаратную платформу), в которой работает броузер.

Сложность свойств объекта

Navigator
делает невозможной универсальную реализацию определения типа броузера. На раннем этапе развития Всемирной паутины было написано немало программного кода, зависящего от типа броузера, проверяющего свойства, такие как
navigator.appName
. Создавая новые броузеры, производители обнаружили, что для корректного отображения содержимого существующих веб-сайтов они должны устанавливать значение «Netscape» в свойстве
appName
. По тем же причинам потерял свою значимость номер в начале значения свойства
appVersion
, и в настоящее время реализация определения типа броузера должна опираться на строку в свойстве
navigator.userAgent
, имеющую более сложный формат, чем ранее. Пример 14.3 демонстрирует, как с помощью регулярныx выражений (взятых из библиотеки jQuery) можно получить из свойства
navigator.userAgent
название броузера и номер версии.

Пример 14.3. Определение типа броузера с помощью свойства

navigator.userAgent

// Определяет свойства browser.name и browser.version, позволяющие выяснить

// тип клиента. За основу взят программный код из библиотеки jQuery 1.4.1.

// Оба свойства, name и version, возвращают строки, и в обоих случаях

// значения могут отличаться от фактических названий броузеров и версий.

// Определяются следующие названия броузеров:

//

// "webkit": Safari или Chrome: version содержит номер сборки WebKit

// "opera": Opera; version содержит фактический номер версии броузера

// "mozilla": Firefox или другие броузеры, основанные на механизме gecko;

// version содержит номер версии Gecko

// "msie": IE; version содержит фактический номер версии броузера

//

// Например, для Firefox 3.6 возвращаются: {name: "mozilla", version: "1.9.2"}

var browser = (function {

var s = navigator.userAgent.toLowerCase;

var match = /(webkit)[ \/]([\w.]+)/.exec(s) ||

  • Читать дальше
  • 1
  • ...
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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