Давайте подробнее рассмотрим свойство
userAgent
объекта navigator
, с помощью которого можно извлечь много полезной информации. Когда вы посещаете Web-страницу, то ваш браузер посылает строку userAgent
серверу, по которому сервер определяет ваш браузер, номер версии и другие детали о вашей системе. Данная информация помогает серверу подстроиться под работу вашего браузера. Строка, возвращаемая свойством userAgent
, у всех браузеров уникальная. Например, у браузера Opera версии 56.0.3051.99, запущенного в системе Windows 10, свойство возвращает очень длинную строку:
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 YaBrowser/18.10.0.2724 Yowser/2.5 Safari/537.36
ПРИМЕЧАНИЕ
Чтобы быстро получить строку userAgent в своем браузере, наберите прямо в адресной строке следующее (с соблюдением регистра символов): javascript:alert(navigator.userAgent).
Разберем еще один пример свойства userAgent
.
Рис. 1. Строка userAgent
Разберем строку userAgent
по частям (рис. 1).
Moziiia/4.0
— по историческим причинам браузер использует имя Mozilla и номер версии 4.0 (к версии Internet Explorer никакого отношения не имеющий).compatible
— флаг, используемый современными браузерами, для индикации совместимости с различными возможностями.msie 7.0
— маркер версии, указывающий на браузер и его номер версии. В данном случае указывает на Internet Explorer 0Windows nt 6.0
— маркер платформы, указывающий на операционную систему и ее номер версии. В нашем случае указывает на Windows Vista.
Кроме этих стандартных записей могут существовать и другие дополнительные маркеры, которые могут быть добавлены другими приложениями. О некоторых из них поговорим чуть позже. Для любознательных приведу табл. 1 и 2 справочного характера
Таблица 1. Маркеры версии браузера Internet Explorer
Маркер версии бразузера | Браузер |
MSIE 8.0 | Internet 8.0 |
MSIE 7.0 | Internet 7.0 |
MSIE 7.0b | Internet Explorer 7 (Beta 1) |
MSIE 6.0 | Microsoft Internet Explorer 6 |
MSIE 6.0b | Internet Explorer 6 (pre-release) |
MSIE 5.5 | Internet Explorer 5.5 |
MSIE 5.01 | Internet Explorer 5.01 |
MSIE 5. | 0 Internet Explorer 5 |
MSIE 5.0b1 | Internet Explorer 5 (pre-release) |
MSIE 4.01 | Internet Explorer 4.01 |
Таблица 2. Маркеры платформы для определения операционной системы
Маркер платформы | Платформа |
Windows NT 6.0 | Windows Vista |
Windows NT 5.2 | Windows Server 2003; Windows XP x64 Edition |
Windows NT 5.1 | Windows XP |
Windows NT 5.01 | Windows 2000, Service Pack 1 (SP1) |
Windows NT 5.0 | Windows 2000 |
Windows NT 4.0 | Microsoft Windows NT 4.0 |
Windows 98; Win 9x 4.90 | Windows Millennium (Windows ME) |
Windows 98 | Windows 98 |
Windows 95 | Windows 95 |
Windows CE | Windows CE |
В данный момент уже известно, что в Internet Explorer 8 Beta 1 свойство
userAgent
будет иметь строку
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
Как видите, изменилась подстрока msie 7.0 на msie 8.0. Используя эти различия, можно писать сценарии для разных версий Internet Explorer. В следующем примере показан сценарий определения браузера и его версии (листинг 1).
Листинг 1. Определение версии браузера Internet Explorer
<script type = "text/javascript">
function getIEVersion()
// Возвращает номер версии Internet Explorer или –1,
// если используется другой браузер
{
var retval = -1; // Возвращаемое значение (по умолчанию равно -1,
// т. е. другой браузер)
if (navigator.appName == 'Microsoft Internet Explorer')
{
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
retval = parseFloat( RegExp.$1 );
}
return retval;
}
function checkVersion()
{
var msg = "Вы используете не Internet Explorer";
var ver = getIEVersion();
if (ver > -1)
{
if (ver >= 7.0)
msg = "Вы используете Internet Explorer 7 или Internet Explorer 8."
else msg = "Вам следует обновить версию Internet Explorer.";
}
alert( msg );
}
</script>
<p>
<input type="button" value="Версия IE"
onClick="alert(getIEVersion())">
</p>
В этом примере мы определяем версию браузера Internet Explorer и, если видим, что она ниже 7 версии, то выводим сообщение о необходимости обновить браузер. Особое внимание нужно обратить на строчку ver >= 7
. Очень многие программисты допустили в свое время одну и ту же ошибку, когда использовали выражение типа ver == 4
. Этот код не учитывал возможность увеличения номера версии браузера, в результате чего после появления новых релизов Internet Explorer страницы становились недоступными для пользователей. Поэтому еще раз пересмотрите свои страницы. Возможно, у вас еще сохранились старые неправильные конструкции в коде. По заверениям разработчиков из Microsoft новая версия Internet Explorer 8.0 будет полностью соответствовать стандартам CSS 2.1. Поэтому вам, наверняка, пригодится функция checkversion()
с выражением if (ver >= 8.0)
, чтобы соответствовать новым стандартам.