我的目标是从我的文档“<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条件注释相比有哪些缺点(后果)?
我现在能想到的一个效果:
编辑:我将继续并承认添加这些类的最可靠方式是(遗憾地)使用IE条件注释。谢谢大家对话。
答案 0 :(得分:5)
另一件事是,单独使用JavaScript并不是一个完美检测浏览器的好主意。您是否听说过用户代理欺骗? JavaScript通过用户代理检测浏览器。但是,如果浏览器附带一个欺骗性的用户代理,那么Firefox就像Chrome一样。希望你明白!
答案 1 :(得分:1)
来自您提供的link,
- 您不会加载不适用的规则,因为它们不是 对于这个浏览器。
- 您不依赖于可以独立于CSS关闭的技术。
- 您不依赖于语法错误可能暂时破坏浏览器检测的技术。
- 浪费浏览器时间设置相关课程并在各处重新计算样式是没有意义的。是的,这次是 基本上是不明显的,但从“肮脏与清洁”的立场来看,我 认为让它更脏。
醇>
我个人认为,您不应该依赖于userAgent
,而不应仅为ie
加载不必要的css规则。
答案 2 :(得分:0)
为什么不能为所需的类添加具有IE特定设计的单独样式表,而不是向html元素添加更多类。您也可以在一个css文件中引用http://paulirish.com/2009/browser-specific-css-hacks/,您可以使用css hacks定位所有浏览器。这也将解决您从html head标签中删除IE特定条件的初始目的