im просто практиковал Javascript и придумал код Javascript, который обнаруживает и создает определенное имя класса для разных браузеров, поэтому мне больше не нужны хаки CSS. это хорошо?
var browser = navigator.userAgent;
if (browser.match("OPR")) {
$("body").addClass("opera");
}
else if (browser.match("Firefox")) {
$("body").addClass("firefox");
}
else if (browser.match("Safari")) {
if (browser.match("Chrome")) {
$("body").addClass("chrome");
}
else {
$("body").addClass("safari");
}
}
Это работает, да, но, как говорится в старой поговорке: не изобретайте колесо :)
Мир и его жена используют Modernizr в наши дни... http://modernizr.com/
Включите это в свой проект, и он будет применять классы повсюду, чтобы показать вам не только браузер, но и версию. Кроме того, он расскажет вам, включен ли JavaScript, и вы также можете использовать этот прецедент.
Кроме того, как заявили другие, в настоящее время мы проверяем функции вместо браузеров, например:
if (Modernizr.audio) { //play sounds }
Таким образом, мы можем протестировать возможности браузеров для выполнения задачи, а не знать, какой браузер/платформа/конфигурация поддерживает определенную функцию. Neato.
Обвинение браузером в целом - плохая идея. Проблема с тем, что вы делаете, - это если кто-либо посещает ваш сайт с браузером, который здесь не упоминается (например, браузер по умолчанию Android или один из браузеров ниши, которые Microsoft предлагает вам использовать, если вы переустановили свой компьютер), он будет не получить CSS.
И если у вас есть кто-то со старой версией поддерживаемого браузера (скажем, он все еще использует XP и IE6), этот человек собирается получить тот же CSS, что и кто-то, использующий IE11 в вашем случае.
И если кто-то отключил JS (редко в эти дни, но может случиться), он также не получает тело CSS.
В соответствии с тем, что сказал Richard A
, мир перешел от проверки браузеров и больше к Feature Checking
Несмотря на то, что everybdoy говорит о том, как обнюхивает функция, зная, что браузер, с которым вы имеете дело, все еще использует его, особенно когда дело касается IE. Лично я нашел этот условный комментарий трюк очень удобным:
<!doctype html>
<!--[if lt IE 7 ]>
<html class="no-js ie ie6" lang="en"> <![endif]-->
<!--[if IE 7 ]>
<html class="no-js ie ie7" lang="en"> <![endif]-->
<!--[if IE 8 ]>
<html class="no-js ie ie8" lang="en"> <![endif]-->
<!--[if IE 9 ]>
<html class="no-js ie ie9" lang="en"> <![endif]-->
<!--[if (gte IE 10)|!(IE)]>
<html class="no-js">
<!--<![endif]-->
Таким образом, вы можете добавлять исключения к своим CSS, например
.ie .nav {
}