2

一位网页设计师为我们创建了带有 IE 特定评论的页面。因此,仅当用户使用特定版本的 IE 时才会包含某些样式表:

<!--[if lt IE 7]>
<link type="text/css" rel="stylesheet" href="/styles/ie6-fixes.css" media="screen"  />
<![endif]-->

JavaScript 文件也使用了相同的技术。不幸的是,这导致 IE 用户的 HTTP 请求更多,因此感知到的页面加载时间更慢。一般来说,我的做法是将所有的 CSS 合并到一个文件中,将所有的 JS 合并到一个文件中。

有没有办法让这些 IE 特定的评论在 CSS 和/或 JS 文件本身中?或者有没有办法模拟这个功能?

4

3 回答 3

3

对于 CSS,您可以使用特定于 IE 的注释来围绕表单元素中的文档内容

<div id="IE6">

这可以让您通过在选择器前面加上“#IE6”来实现 IE6 CSS 修复。

有关详细信息,请参阅http://www.positioniseverything.net/articles/cc-plus.html

JScript 还具有条件编译,可以帮助您将 JS 文件合并为一个。请参阅http://msdn.microsoft.com/en-us/library/ahx1z4fs(VS.80).aspx

于 2010-01-31T11:30:02.850 回答
1

那么你可以做的是使用动态构建器。例如,在您的条件中,您可以使用内联脚本将构建的参数添加到 js 数组中。然后你可以使用该数组来构建你的脚本/css的url,就像/assets/css/build.php?use=base,ie7js一样。

然后在这个 php(或任何你想要的语言风格)中,你可以使用 minify 或其他一些库将所有脚本/css 编译成单个文件,并剥离所有杂物并交付它们。然后,您还可以缓存构建以便以后更快地交付。

我已经在许多带有 PHP Minify 和/或各种 Symfony 插件的项目中使用了这种策略,它们做同样的事情。

于 2010-01-27T22:02:18.353 回答
0

对于 CSS,您可以尝试使用其他浏览器会忽略而 IE6 会尊重的各种选择器技巧,但这对其他人来说会带来很小的性能成本。

对于 JS,您可以更新您的函数以检查 User-Agent 字符串,但这与 CSS 提案具有基本相同的问题。

于 2010-01-27T22:01:06.267 回答