0

我的目标是从我的文档中删除 IE 条件注释<head>,但我认识到我仍然需要使用特定于 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 标记中,从而导致这个(如图所示):

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

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

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

  1. IE 客户端可能禁用了 JavaScript。对我来说这不是问题。访问我网站的客户需要启用 JS。

编辑:我将继续并承认添加这些类的最可靠方法是(可悲地)使用 IE 条件注释。谢谢大家的对话。

4

3 回答 3

5

另一件事是,仅 JavaScript 并不是完美检测浏览器的好主意。你听说过用户代理欺骗吗?JavaScript 通过用户代理检测浏览器。但是,如果浏览器带有欺骗性的用户代理,那么 Firefox 就可以像 Chrome 一样运行。希望你得到它!

于 2012-06-28T18:11:51.913 回答
1

从您提供的同一个链接

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

我个人认为,你不应该依赖嗅探userAgent,也不应该只加载不必要的 css 规则ie

于 2012-06-28T18:40:43.417 回答
0

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

于 2012-06-28T18:21:35.977 回答