这有什么好处吗?使用Javascript检测并定位特定的浏览器CSS

时间:2013-11-08 11:49:55

标签: javascript jquery html css

我只是练习Javascript并编造了一个Javascript代码,可以检测并为不同的浏览器创建特定的类名,所以我不再需要CSS hacks。这有什么好处吗?

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");
    }
}

4 个答案:

答案 0 :(得分:3)

这是有效的,是的,但正如那句老话:不要重新发明轮子:)

这些天世界和他的妻子正在使用Modernizr ...... http://modernizr.com/

包含在您的项目中,它将在整个地方应用课程,不仅向您显示正在提供的浏览器,还显示版本。此外,它会告诉您是否启用了JavaScript,这也允许您覆盖该用例。

此外,正如其他人所说,现在我们检查功能而不是浏览器,例如:

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

这样,我们可以测试浏览器执行任务的能力,而不必知道哪个浏览器/平台/配置支持某个功能。 NEATO。

答案 1 :(得分:1)

根据Richard A所说的,世界已从浏览器检查转移到Feature Checking

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

答案 2 :(得分:1)

浏览器嗅探通常是一个坏主意。您正在做的问题是,如果有人使用此处未提及的浏览器访问您的网站(如Android默认浏览器或微软为您重新安装PC时提供的利基浏览器之一),他将没有得到任何身体CSS。

如果你有一个支持浏览器旧版本的人(比如说他还在使用XP和IE6),那么这个人将获得与你使用IE11的人相同的CSS。

如果某人有JS禁用(这些日子很少见,但可能会发生),他也没有获得身体CSS。

答案 3 :(得分:0)

尽管每个人都在谈论功能嗅探,但是知道你正在处理的浏览器仍有其用途,特别是涉及到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 {

}