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

на главную

Жанры

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

14.4. Информация о броузере и об экране

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

navigator
и
screen
объекта
Window
. Эти свойства ссылаются, соответственно, на объекты
Navigator
и
Screen
, содержащие информацию, которая дает возможность подстроить поведение
сценария под существующее окружение.

14.4.1. Объект Navigator

Свойство

navigator
объекта
Window
ссылается на объект
Navigator
, содержащий общую информацию о номере версии и о производителе броузера. Объект
Navigator
назван «в честь» броузера Netscape Navigator, но он также поддерживается во всех других броузерах. (Кроме того, IE поддерживает свойство
clientlnformation
как нейтральный синоним для
navigator
. К сожалению, другие броузеры свойство с таким именем не поддерживают.)

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

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

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

Наследство Карны

Вассму Хербьёрг
3. Книга Дины
Проза:
современная проза
5.00
рейтинг книги
Наследство Карны

Камень. Книга восьмая

Минин Станислав
8. Камень
Фантастика:
фэнтези
боевая фантастика
7.00
рейтинг книги
Камень. Книга восьмая

Лекарь Империи 10

Карелин Сергей Витальевич
10. Лекарь Империи
Фантастика:
городское фэнтези
боевая фантастика
аниме
попаданцы
5.00
рейтинг книги
Лекарь Империи 10

Изгой Проклятого Клана. Том 6

Пламенев Владимир
6. Изгой
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Изгой Проклятого Клана. Том 6

Газлайтер. Том 29

Володин Григорий Григорьевич
29. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 29

Бастард

Майерс Александр
1. Династия
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард

Мужчина не моей мечты

Ардова Алиса
1. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.30
рейтинг книги
Мужчина не моей мечты

Оживший камень

Кас Маркус
1. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Оживший камень

Врубель

Коган Дора Зиновьевна
Жизнь в искусстве
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Врубель

Вампир. Английская готика. XIX век

Стивенсон Роберт Льюис
Фантастика:
ужасы и мистика
7.67
рейтинг книги
Вампир. Английская готика. XIX век

Города в полете

Блиш Джеймс Бенджамин
Фантастика:
космическая фантастика
4.25
рейтинг книги
Города в полете

Вернувшийся: Посол. Том IV

Vector
4. Вернувшийся
Фантастика:
космическая фантастика
киберпанк
5.00
рейтинг книги
Вернувшийся: Посол. Том IV

Афганский рубеж 2

Дорин Михаил
2. Рубеж
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Афганский рубеж 2

Кодекс Охотника. Книга V

Винокуров Юрий
5. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
4.50
рейтинг книги
Кодекс Охотника. Книга V