添加针对IE浏览器的CSS类:JavaScript或条件注释?

时间:2012-06-28 18:08:40

标签: javascript jquery internet-explorer modernizr conditional-comments

我的目标是从我的文档“<head>中删除IE条件注释,但我认识到我仍然需要使用ie6,7,8特定的样式表(如果我错了,请纠正我)。

例如,这些IE条件由HTML5Boilerplate 3.0使用:

<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"><![endif]-->
<!--[if IE 7]>   <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]>   <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->

所以相反我认为我想使用JavaScript将类添加到我的html标记中,从而产生这个(as illustrated here):

<html lang="en" class="ie6 ie7 ie8">

所以我的问题:使用JavaScript将CSS类添加到文档的html元素与使用IE条件注释相比有哪些缺点(后果)?

我现在能想到的一个效果:

  1. IE客户端可能禁用了JavaScript。对我来说这不是问题;访问我网站的客户必须启用JS。
  2. 编辑:我将继续并承认添加这些类的最可靠方式是(遗憾地)使用IE条件注释。谢谢大家对话。

3 个答案:

答案 0 :(得分:5)

另一件事是,单独使用JavaScript并不是一个完美检测浏览器的好主意。您是否听说过用户代理欺骗? JavaScript通过用户代理检测浏览器。但是,如果浏览器附带一个欺骗性的用户代理,那么Firefox就像Chrome一样。希望你明白!

答案 1 :(得分:1)

来自您提供的link

  
      
  1. 您不会加载不适用的规则,因为它们不是   对于这个浏览器。
  2.   
  3. 您不依赖于可以独立于CSS关闭的技术。
  4.   
  5. 您不依赖于语法错误可能暂时破坏浏览器检测的技术。
  6.   
  7. 浪费浏览器时间设置相关课程并在各处重新计算样式是没有意义的。是的,这次是   基本上是不明显的,但从“肮脏与清洁”的立场来看,我   认为让它更脏。
  8.   

我个人认为,您不应该依赖于userAgent,而不应仅为ie加载不必要的css规则。

答案 2 :(得分:0)

为什么不能为所需的类添加具有IE特定设计的单独样式表,而不是向html元素添加更多类。您也可以在一个css文件中引用http://paulirish.com/2009/browser-specific-css-hacks/,您可以使用css hacks定位所有浏览器。这也将解决您从html head标签中删除IE特定条件的初始目的