К сожалению иногда верстка ну никак не хочет работать правильно на некоторых браузерах, выявляя совершенно непонятные баги этого самого браузера. Поэтому приходится писать 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();