最近我们在页面 (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 文件中。
关于css - 来自 document.styleSheets.length 的样式表计数在 IE 和 Chrome 之间不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23013010/