Корпоративный блог Центра Высоких Технологий

Игорь Вечканов
Игорь Вечканов
4 октября 200811:38
Центр Высоких Технологий
Ижевск Россия
Определяем версию IE на клиенте

К сожалению иногда верстка ну никак не хочет работать правильно на некоторых браузерах, выявляя совершенно непонятные баги этого самого браузера. Поэтому приходится писать javascript-затычки для этих самых браузеров.

Однако, поскольку это происходит крайне редко, мне приходилось каждый раз искать алгоритм определения версии браузера, используемого клиентом. Мне это надоело, и я решил подробнее разобраться в вопросе.

Итак, javascript узнает информацию о браузере клиента через navigator.userAgent. Можете проверить, что javascript-программист может узнать о Вашем браузере, введя в строку адреса «javascript:navigator.userAgent».

Немного подумав, можно написать функцию, определяющую имя используемого браузера:

function detect_browser()
{
var agt = navigator.userAgent.toLowerCase();
if (agt.indexOf("opera") != -1) return 'Opera';
if (agt.indexOf("firefox") != -1) return 'Firefox';
if (agt.indexOf("safari") != -1) return 'Safari';
if (agt.indexOf("msie") != -1) return 'Internet Explorer';
if (agt.indexOf("netscape") != -1) return 'Netscape';
if (agt.indexOf("mozilla/5.0") != -1) return 'Mozilla';
if (agt.indexOf('\/') != -1) {
if (agt.substr(0,agt.indexOf('\/')) != 'mozilla') 
{
return navigator.userAgent.substr(0,agt.indexOf('\/'));
}
else return 'Netscape';
} else if (agt.indexOf(' ') != -1)
return navigator.userAgent.substr(0,agt.indexOf(' '));
else return navigator.userAgent;
}

Лично мне нужно было узнать: а не IE 7 ли на клиенте? Я это сделал так:

var agt = navigator.userAgent.toLowerCase();
if(agt.indexOf("msie") != -1)
if(agt.substr(agt.indexOf("msie")+5,1) == '7')
clearBugsOfIE7();

Комментарии: 1

aleske 7 октября 2008 13:23
для полного щастья не хватает ссылок на
http://ru.wikipedia.org/wiki/User_agent
http://www.useragentstring.com/
http://www.user-agents.org/

вообще говоря, в ближайшем будущем корректнее будет смотреть
на версию движка, а не браузера. то есть, Trident, AppleWebKit, Presto,
Gecko под капотом, али что другое.
|

Добавить комментарий

 


Подписка

Последние комментарии