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

标签 css internet-explorer

最近我们在页面 (31) 的最大样式表上遇到了来自 IE 的警报 - 可以在此处阅读更多信息:http://bit.ly/1e8saOa

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

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

不同之处在于 IE 报告的许多内联样式标签具有 0 个规则和 0 个选择器。这些被确定为内联样式标签,因为 ocument.styleSheets[i].href 未定义。查看源代码仅返回 1 个内联样式标签 ...

有没有人在 IE 中遇到过这个问题,如果有的话,可以解释为什么它会返回这些假定的内联样式,这些样式会人为地使 IE 计数的总数达到 31 个最大值?在我的例子中,它返回了其中的 8 个。

编辑:新细节

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

最佳答案

如果文档超过 31 <style> block 或 <link type="text/css"> block ,IE 在#31 之后停止处理它们。没有错误,没有警告,它只是停止。仔细、仔细地查看“适用于”部分。通过 IE 的五次重大修订,这个错误已经存在了将近十年。 如果您碰巧使用了一堆自己的控件或第三方控件,每个控件都发出自己的 <style>阻止或引用外部 CSS 文件,你可能会被这个搞砸。关键是您,开发人员不一定能控制控件发出的标记,您只需要希望您不要在页面上使用 32 种不同类型的控件或所有这些控件的 CSS合并到一个 CSS 文件中。

source

关于css - 来自 document.styleSheets.length 的样式表计数在 IE 和 Chrome 之间不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23013010/

相关文章:

html - 当页面宽度为768px时如何替换按钮的内容?

Javascript:根据是否为 ​​IE7 而改变

java - Web 应用程序的浏览器问题

jquery - IE11 上的横向打印模式

html - 为什么我的文档模式是: IE7 standards in HTML5 page?

html - 菜单栏上的 Logo 图像叠加在菜单栏上方和下方

java - Jawr CSSServlet 抛出 StackOverflowError

javascript - jquery 向下动画(100% 元素高度)

html - 图像上的文本仅包含 css 和 html

css - IE 中的文本区域回退