Rails 3.1,资产管道和生产模式中的IE 6和7 – 一些CSS和js没有正确加载

在生产模式下试用我的Rails 3.1应用程序(Debian 6,Ruby 1.9.2,Passenger)。 我尝试使用IE 6和IE 7,并且一些资产未正确加载。 开发模式下一切正常。

有些css&js没有正确加载,你正在编译所有文件。 特别是我遇到了下拉菜单问题(jquery superfish菜单)。 在生产和开发中,IE8,IE 9,Firefox,Chrome中的一切都运行良好。 该问题仅出现在生产中的IE 6和7中。

尝试清除缓存(在浏览器和服务器上)。 重新编译资产。 什么都看不到帮助。

有没有人碰到任何东西 – 像那样?

对于任何有同样问题的人来说,这是MS支持( http://support.microsoft.com/kb/262161 )问题的根源:

出现此问题的原因在Internet Explorer中满足以下条件:未应用前31个样式标记后的所有样式标记。 不应用前4,095条规则之后的所有样式规则。 在使用@import规则连续导入导入其他样式表的外部样式表的页面上,将忽略深度超过三级的样式表。

ARRRRRRRRRRRRRRR! 当MS再次违反标准时,几天就试图追查我的代码问题! #@)(!@#)

这让我进一步调查,令我惊讶的是,IE6和IE7似乎只处理了一个大型css文件中的前2025行 – 其余部分被忽略了。 (起初我认为这是一些线路限制,但事实certificate它是4095条规则,这是在2025线上)。 只是看起来很愚蠢。 较新的IE和Chrome,Safari,Opera和FF似乎没有问题。 我最终将我的css分解为application-1.css&application-2.css,以便将produciton中的文件数量保持在最低限度,但它仍然非常烦人。

是否启用了调试? 即在开发模式下你的javascript被拆分了吗?

尝试禁用它,以便资产管道将所有内容合并到同一个文件中,看它是否仍然可以在开发模式下运行。

当资产合并在一起并且其中一个文件中缺少分号时,我遇到了一些问题。 这可能是一个麻烦,但可能会发生。 其他更好的浏览器使它们可以正常,但IE只是混合起来。

人们正在使用一个很棒的模块CssSplitter来分割css文件,并且它已经适合从资产管道中使用。 https://gist.github.com/2398394