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

Is this any good? Detects and target specific browser CSS using Javascript

本文关键字:定位 CSS 浏览器 检测 Javascript 什么 使用      更新时间:2023-09-26

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 }

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

正如Richard A所说,世界已经从浏览器检查转向Feature Checking

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

一般来说,

浏览器嗅探是一个坏主意。你正在做的事情的问题是,如果有人使用这里没有提到的浏览器访问你的网站(如Android默认浏览器或Microsoft重新安装PC时提供您使用的利基浏览器之一),他将不会得到任何正文CSS。

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

如果有人禁用了JS(现在很少见,但可能会发生),他也不会得到身体CSS。

尽管每个人都说功能嗅探,但知道您正在处理的浏览器仍然有其用途,尤其是在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 {
}