2014-04-11 53 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