我只是练习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");
}
}
答案 0 :(得分:3)
这是有效的,是的,但正如那句老话:不要重新发明轮子:)
这些天世界和他的妻子正在使用Modernizr ...... http://modernizr.com/
包含在您的项目中,它将在整个地方应用课程,不仅向您显示正在提供的浏览器,还显示版本。此外,它会告诉您是否启用了JavaScript,这也允许您覆盖该用例。
此外,正如其他人所说,现在我们检查功能而不是浏览器,例如:
if (Modernizr.audio) { //play sounds }
这样,我们可以测试浏览器执行任务的能力,而不必知道哪个浏览器/平台/配置支持某个功能。 NEATO。
答案 1 :(得分:1)
根据Richard A
所说的,世界已从浏览器检查转移到Feature Checking
答案 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 {
}