2013-05-01 40 views
5

我使用IE9,使用F12工具進入IE8標準模式,測試我的頁面。頁面腳本使用getBoundingClientRect來計算視口中可見的內容。爲什麼getBoundingClientRect在IE8中變慢?

使用分析工具,我看到採取了很多時間來getBoundingClientRect電話。例如,244次調用該函數的獨佔時間爲4,361ms!

是否有此功能是在IE8這麼慢的一個原因?在IE9模式下運行Chrome,FireFox等時,該功能似乎很快。

+0

它每次調用可能引發DOM迴流,這取決於你如何以及在何處使用它? – Bergi 2013-05-01 16:17:48

回答

0

getBoundingClientRect最早是由微軟在IE5介紹,有沒有已知的性能問題。

jQuery UI的,和其他人,使用它,當在過去,他們移動到它,是真棒:http://ejohn.org/blog/getboundingclientrect-is-awesome/

我發現jQuery similar calculationgetBoundingClientRect之間的比較: http://jsperf.com/getboundingclientrect-vs-jquery 通常贏得getBoundingClientRect

你在IE8兼容模式下運行你的站點有時可能會影響性能,你可以在真正的IE8瀏覽器中測試它嗎?這裏的表現必須相同。

+0

我將在本週晚些時候設置一個IE8虛擬機並進行測試。我希望這只是compat模式緩慢。 – 2013-05-01 17:53:39

+4

@AndrewDavey我遇到了同樣的問題 - 你是否發現性能問題只是兼容模式的副作用? – 2013-07-25 16:35:29

+3

@LarsGrammel - 這看起來很合適:http://xkcd.com/979/ – Bobson 2014-05-13 19:08:27