К сожалению иногда верстка ну никак не хочет работать правильно на некоторых браузерах, выявляя совершенно непонятные баги этого самого браузера. Поэтому приходится писать 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();
Метки: javascript, верстка
для полного щастья не хватает ссылок на
http://ru.wikipedia.org/wiki/User_agent
http://www.useragentstring.com/
http://www.user-agents.org/
вообще говоря, в ближайшем будущем корректнее будет смотреть
на версию движка, а не браузера. то есть, Trident, AppleWebKit, Presto,
Gecko под капотом, али что другое.