0

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

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

4 回答 4

3

这行得通,是的,但正如老话所说:不要重新发明轮子:)

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

将它包含在您的项目中,它将在所有地方应用类,不仅向您显示正在服务的浏览器,而且还显示版本。此外,它还会告诉您是否启用了 JavaScript,这也允许您涵盖该用例。

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

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

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

于 2013-11-08T11:54:22.753 回答
1

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

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

于 2013-11-08T11:59:21.993 回答
1

一般来说,浏览器嗅探是个坏主意。您正在做的问题是,如果有人使用此处未提及的浏览器访问您的网站(例如 Android 默认浏览器或 Microsoft 为您提供的利基浏览器之一,如果您重新安装了 PC),他会没有得到任何正文 CSS。

并且如果您有人使用旧版本的受支持浏览器(假设他仍在使用 XP 和 IE6),那么在您的情况下,该人将获得与使用 IE11 的人相同的 CSS。

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

于 2013-11-08T11:59:40.923 回答
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 {

}
于 2013-11-08T13:37:31.563 回答