Это хорошо? Обнаруживает и предназначается для определенного браузера CSS, используя Javascript

0

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");
    }
}
  • 1
    При всем моем уважении, у меня нет идеи заменить определенные префиксы браузера внутри одного правила селектора несколькими правилами селектора, содержащими по одному префиксу каждое.
  • 1
    « Это хорошо? » Наверное, нет. См. Stackoverflow.com/questions/1294586/…

4 ответа

3

Это работает, да, но, как говорится в старой поговорке: не изобретайте колесо :)

Мир и его жена используют Modernizr в наши дни... http://modernizr.com/

Включите это в свой проект, и он будет применять классы повсюду, чтобы показать вам не только браузер, но и версию. Кроме того, он расскажет вам, включен ли JavaScript, и вы также можете использовать этот прецедент.

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

if (Modernizr.audio) { //play sounds }

Таким образом, мы можем протестировать возможности браузеров для выполнения задачи, а не знать, какой браузер/платформа/конфигурация поддерживает определенную функцию. Neato.

1

Обвинение браузером в целом - плохая идея. Проблема с тем, что вы делаете, - это если кто-либо посещает ваш сайт с браузером, который здесь не упоминается (например, браузер по умолчанию Android или один из браузеров ниши, которые Microsoft предлагает вам использовать, если вы переустановили свой компьютер), он будет не получить CSS.

И если у вас есть кто-то со старой версией поддерживаемого браузера (скажем, он все еще использует XP и IE6), этот человек собирается получить тот же CSS, что и кто-то, использующий IE11 в вашем случае.

И если кто-то отключил JS (редко в эти дни, но может случиться), он также не получает тело CSS.

  • 0
    Спасибо за длинный ответ. Действительно ценю это. Так что я думаю, что я вернулся к чертежной доске. хе-хе. Но что, если я просто использую свой код, чтобы исправить небольшие расхождения между браузерами, такие как добавление полей / отступов? это возможно?
  • 0
    Я бы делал анализ в браузере только в том случае, если анализатор имеет решающее значение в предоставлении каждому пользователю сопоставимого опыта. В этом случае небольшие различия полей или отступов не являются существенными, если только они не означают, что из-за этого становится сложнее использовать страницу.
1

В соответствии с тем, что сказал Richard A, мир перешел от проверки браузеров и больше к Feature Checking

http://msdn.microsoft.com/en-us/magazine/hh475813.aspx

0

Несмотря на то, что 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 {

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню