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

ЖАНРЫ

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

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

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) ||

/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(s) ||

/(msie) ([\w.]+)/.exec(s) ||

!/compatible/.test(s) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec(s) ||

[];

return { name: match[1] || "", version: match[2] || "0" };

});

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

onLine

Свойство

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

geolocation

Объект

Geolocation
, определяющий API для выяснения географического положения пользователя. Подробнее об этом рассказывается в разделе 22.1.

javaEnabled

Нестандартный метод, который должен возвращать

true
, если броузер способен выполнять Java-апплеты.

cookiesEnabled

Нестандартный метод, который должен возвращать

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

14.4.2. Объект Screen

Свойство

screen
объекта
Window
ссылается на объект
Screen
, предоставляющий информацию о размере экрана на стороне пользователя и доступном количестве цветов. Свойства
width
и
height
возвращают размер экрана в пикселах. Свойства
availWidth
и
availHeight
возвращают фактически доступный размер экрана; из них исключается пространство, требуемое для таких графических элементов, как панель задач. Свойство
colorDepth
возвращает количество битов на пиксел, определяющих цвет. Типичными значениями являются 16, 24 и 32.

Поделиться с друзьями: