2014-04-11 26 views
0
之间的区别

最近我们打的警报从IE上最大样式表的网页(31)上 - 更对可以在这里读到:http://bit.ly/1e8saOa样式表计数IE和Chrome

作为的一部分在IE和Chrome的控制台中调查I used a script,以查看正在使用的样式表,然后将多个样式表合并为1以提高性能并且不会导致IE中的错误。

但是我注意到,IE和Chrome之间document.styleSheets.length返回的样式表的计数/长度不同。

不同之处在于IE浏览器报告的许多内嵌样式标签有0个规则和0个选择器。这些被确定为内联样式标签,因为ocument.styleSheets [i] .href未定义。审查源返回只有一个内联样式标记...

有没有人跑过这与IE浏览器,如果有任何灯光流失为什么它返回这些假设的内联样式,人为地夸大IE总数计数最大31?在我的情况下,它是返回8这些。

编辑:新的细节

进一步的测试和研究后,我发现每个控件,当单独添加,添加了标签,在其5种风格,另一个是空的,里面有0风格。这些确实在网站的主要default.aspx中定义,但它似乎是AJAX加载它将它们拉入。在IE中,具有5种样式的标签仅被计数一次,因为它看起来确定了样式中的独特性,重新添加它。然而,在空的上面,IE多次添加它们,每个控件一个,因此推动了样式表的计数。所以,如果您遇到这种类型的问题,请查找任何空标签。

回答

0

如果文档包含31个以上的<style>块或<link type="text/css">块,则IE在#31之后停止处理它们。没有错误,没有警告,它只是停止。请仔细阅读“适用于”部分。这个bug通过对IE的五个主要版本进行了近十年的时间。 如果您碰巧使用了一堆您自己的控件或第三方控件,每个控件都会发出自己的<style>块或对外部CSS文件的引用,那么您可能会因此而受到影响。关键是你,开发人员不一定能够控制控件发出的标记,你只需要希望不要在页面上使用32种不同类型的控件,或者对于所有这些控件的CSS被合并到一个单独的CSS文件中。

source