来自document.styleSheets.length的样式表计数在IE和Chrome之间有所不同

时间:2014-04-11 12:48:35

标签: css internet-explorer

最近我们在页面上的最大样式表上点击了IE的警报(31) - 更多内容可以在这里阅读:http://bit.ly/1e8saOa

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

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

发现差异是IE报告的许多内联样式标签,它们有0个规则和0个选择器。这些被确定为内联样式标签,因为没有定义ocument.styleSheets [i] .href。查看源只返回1个内联样式标记...

有没有人用IE浏览过这个问题,如果有的话有什么亮点可以解释为什么它会返回这些假想的内联样式,人为地夸大了IE计入31最大值的总数?在我的情况下,它返回了其中的8个。

编辑:新细节

经过进一步的测试和研究后,我发现每个控件在单独添加时,会添加一个标记,其中包含5个样式,另一个标记为空,其中包含0个样式。这些实际上是在网站的主要default.aspx中定义的,但它看起来是AJAX加载它。这在IE中,5个样式的标记只计算一次,因为它似乎确定了样式的唯一性并且没有重新添加它。然而,在空的那些,IE添加了多次,每个控件一个,从而推动样式表计数。因此,如果您遇到此类问题,请查找任何空标记。

1 个答案:

答案 0 :(得分:0)

如果文档有超过31个<style>块或<link type="text/css">块,IE只会在#31之后停止处理它们。没有错误,没有警告,它只是停止。好好长时间看看&#34;适用于&#34;部分也是如此。通过IE的五个主要修订,这个bug已经存在了将近十年。 如果您碰巧使用了一堆自己的控件或第三方控件,每个控件都会发出自己的<style>块或对外部CSS文件的引用,那么您可能会对此感到不满。关键是你,开发人员不一定能控制控件发出的标记,你只需要希望你不要在页面上使用32种不同类型的控件或者CSS所有这些控件都合并到一个CSS文件中。

source