Объект navigator

Объект navigator (см. 4.5.1) служит для получения характеристик Web-браузера клиента.

Поддерживаемые объектом navigator свойства отличаются в разных Web-браузерах. Ниже приведены те свойства (только для чтения), которые поддерживаются всеми Web-браузерами:

· userAgent – содержит строку, идентифицирующую Web-браузер клиента;

· appName – содержит имя программы Web-браузера;

· appVersion – содержит версию программы Web-браузера;

· appCodeName – содержит имя кода программы Web-браузера;

· platform – содержит название клиентской платформы;

· cookieEnabled – содержит true, если Web-браузеру разрешен пользователем прием cookie, иначе содержит false.

Объект navigator поддерживает, кроме того, метод javaEnabled(), возвращающий true, если Web-браузеру разрешено пользователем выполне­ние сценариев JavaScript и false – в противном случае.

Основными характеристиками Web-браузера являются его имя и версия.

Имя Web-браузера можно определить по наличию в свойстве userAgent следующих строк:

· "MSIE" – для Internet Explorer;

· "Firefox" – для Firefox;

· "Opera" – для Opera;

· "Safari" – для Safari.

Версию Web-браузера также определяется с помощью свойства userAgent. Номер версии следует сразу за строкой имени Web-браузера и отделен от нее символом пробела (в Internet Explorer) или символом "/" (в Firefox и Opera). В номер версии в Windows задается после строки "Version/".

Пример 4.5.35. Определение характеристик Web-браузера:

Имя Web-браузера можно получить с помощью следующей функции:

function browserNameDef()

{

// Массив имен Web-браузеров

browserNames = new Array("MSIE",

"Firefox", "Opera", "Safari");

// Имя Web-браузера по умолчанию

name = "unknown";

// Поиск имени Web-браузера в цикле

for(i = 0; i < browserNames.length;i++)

{

// Если Web-браузер найден

if(navigator.userAgent.indexOf(browserNames[i])!= -1)

{

// Присваивание имени Web-браузеру

if(browserNames[i] == "MSIE")

name = "Internet Explorer";

else

name = browserNames[i];

// Выход из цикла

break;

}

}

// Возврат имени Web-браузера

return name;

}

Версию Web-браузера для заданного имени можно получить с помощью следующей функции:

function browserVersionDef(browserName)

{

// Выбор параметров поиска версии

switch (browserName)

{

case "MSIE":

case "Internet Explorer":

browserName = "MSIE";

endSymbol = ";";

break;

case "Firefox":

endSymbol = "\n";

break;

case "Opera":

endSymbol = " ";

break;

case "Safari":

browserName = "Version";

endSymbol = " ";

break;

default:

return "unknown"

}

// Поиск имени Web-браузера в свойстве userAgent

browserNameIndex =

navigator.userAgent.indexOf(browserName);

// Если имя Web-браузера найдено

if(browserNameIndex!= -1)

{

// Если символ окончания версии не равен "\n"

if(endSymbol!= "\n")

{

// Определение индекса

// окончания версии

versionEndIndex =

navigator.userAgent.indexOf(endSymbol,

browserNameIndex);

// Определение версии Web-браузера

browserVersion =

navigator.userAgent.substring(

browserNameIndex +

browserName.length + 1, versionEndIndex);

}

else

// Определение версии Web-браузера

browserVersion =

navigator.userAgent.substring(

browserNameIndex +

browserName.length + 1);

// Возврат версии Web-браузера

return browserVersion;

}

// Возврат ошибки в поиске строки Web-браузера

return "error";

}

Для фрагмента сценария:

// Определение имени Web-браузера

browserName = browserNameDef();

// Определение версии Web-браузера

browserVersion = browserVersionDef(browserName);

// Вывод характеристик Web-браузера

alert("Характеристики Вашего Web-браузера:" +

"\n Имя: " + browserName +

"\n Версия: " + browserVersion +

"\n\n userAgent: " + navigator.userAgent +

"\n appName: " + navigator.appName +

"\n appVersion: " + navigator.appVersion +

"\n appCodeName: " + navigator.appCodeName +

"\n platform: " + navigator.platform +

"\n Подключение cookie: " +

(navigator.cookieEnabled?"да":"нет") +

"\n Подключение JavaScript: " +

(navigator.javaEnabled()?"да":"нет"));

в разных Web-браузерах будут выведены следующие сообщения:

(в Internet Explorer)
(в Firefox)
(в Opera)
(в Safari)

Свойства объекта navigator позволяют создавать сценарии, учитывающие используемый Web-браузер и его версию.

Пример 4.5.36. Учет особенностей Web-браузера в сценарии:

При исключении пункта меню в примере 4.5.30(7) из выбираемых пунктов, в Internet Explorer 8.0 и всех остальных Web-браузерах его можно перевести в неактивное состояние, установив значение свойства disabled в true. В Internet Explorer 7.0 и ниже свойство disabled не действует, поэтому пункт меню можно исключить, только удалив его из меню (см. пример 4.5.30(5)).

Следующий фрагмент сценария удаляет пункт меню "Черный" для Internet Explorer 7.0 и ниже, а в Internet Explorer 8.0 и остальных Web-браузерах переводит его в неактивное состояние (для определения имени и версии Web-браузера используются функции browserNameDef() и browserVersionDef(), определенные в примере 4.5.35):

// Задание модифицируемого цвета

modifiedColor = "Черный";

// Получение элемента для

// раскрывающегося меню выбора цвета

selectColorElement =

document.getElementById("colorMenuChoice1");

// Получение коллекции пунктов меню

selectOptions = selectColorElement.options;

// Модификация пункта меню в цикле

for(i = 0;i < selectColorElement.length;i++)

{

// Если пункт меню – модифицируемый пункт

if(selectOptions[i].text == modifiedColor)

{

// Сохранение индекса пункта меню

selectedIndex = i;

// Определение имени Web-браузера

browserName = browserNameDef();

// Определение версии Web-браузера

browserVersion = browserVersionDef(browserName);

// Если Web-браузер - Internet

// Explorer версии 7.0 и ниже

if(browserName == "Internet Explorer" &&

parseFloat(browserVersion) < 8.0)

// Удаление пункта меню

selectColorElement.remove(selectedIndex);

else

// Установка пункта меню

// в неактивное состояние

selectColorElement.options

[selectedIndex].disabled = true;

// Выход из цикла

break;

}

}

После выполнения этого фрагмента раскрывающееся меню будет иметь разный вид в разных версиях Internet Explorer:

  (в Internet Explorer 7.0)   (в Internet Explorer 8.0)

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: