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

这有什么好处吗?使用Javascript检测和定位特定的浏览器CSS,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我只是在练习Javascript,并编造了一个Javascript代码,用于检测和创建不同浏览器的特定类名,这样我就不需要再进行CSS攻击了。有什么好处吗 var browser = navigator.userAgent; if (browser.match("OPR")) { $("body").addClass("opera"); } else if (browser.match("Firefox")) { $("body").addClass("firefox"); }

我只是在练习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");
    }
}

这是可行的,但正如那句老话所说:不要再发明轮子了。:)

现在世界和他的妻子都在使用现代化

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

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

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

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

没错,但正如那句老话所说:不要再发明轮子了。:)

现在世界和他的妻子都在使用现代化

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

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

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

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

根据Richard A所说,世界已经从浏览器检查转向功能检查


根据Richard A所说,世界已经从浏览器检查转向功能检查


一般来说,浏览器嗅探是个坏主意。你所做的问题是,如果任何人使用此处未提及的浏览器访问你的网站(如Android默认浏览器或微软提供给你的一种利基浏览器,如果你重新安装了电脑),他将不会得到任何CSS

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


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

一般来说,浏览器嗅探是个坏主意。你所做的问题是,如果任何人使用此处未提及的浏览器访问你的网站(如Android默认浏览器或微软提供给你的一种利基浏览器,如果你重新安装了电脑),他将不会得到任何CSS

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


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

尽管每个人都说功能嗅探,但知道你正在使用的浏览器仍然有它的用途,特别是在IEs上。就我个人而言,我发现这种有条件的评论技巧非常方便:

<!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]-->

尽管每个人都在谈论功能嗅探,但了解您正在使用的浏览器仍然有其用途,尤其是在IEs方面。就我个人而言,我发现这种有条件的评论技巧非常方便:

<!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]-->

恕我直言,我不想将一个选择器规则中特定于浏览器的前缀替换为多个选择器规则,每个选择器规则包含一个前缀。“这样好吗?”可能不行。请恕我直言,我不想将一个选择器规则中特定于浏览器的前缀替换为多个选择器规则,每个选择器规则包含一个前缀。“这有用吗?”可能不行。谢谢你冗长的答复。非常感谢。所以我想我又回到了画板上。呵呵。但是,如果我只是用我的代码来修复浏览器之间的小差异,比如添加了边距/填充,会怎么样?这可能吗?我只会做浏览器嗅探,如果嗅探在为每一种用户提供可比体验方面至关重要的话。在这种情况下,较小的边距或填充差异并不重要,除非它们意味着页面因此变得更难使用。感谢您的冗长回复。非常感谢。所以我想我又回到了画板上。呵呵。但是,如果我只是用我的代码来修复浏览器之间的小差异,比如添加了边距/填充,会怎么样?这可能吗?我只会做浏览器嗅探,如果嗅探在为每一种用户提供可比体验方面至关重要的话。在这种情况下,较小的边距或填充差异并不重要,除非它们意味着页面因此变得更难使用。