2013-05-01 4 views
5

IE9를 사용 중이며 F12 도구를 사용하여 IE8 표준 모드로 전환하여 내 페이지를 테스트합니다. 페이지 스크립트는 getBoundingClientRect을 사용하여 뷰포트에 표시되는 것을 해결합니다.IE8에서 getBoundingClientRect가 느린 이유는 무엇입니까?

프로파일 링 도구를 사용하여 많은 시간이 걸리는 getBoundingClientRect에 대한 호출이 표시됩니다. 예를 들어,이 함수에 대한 244 건의 호출에는 4,361ms의 독점 시간이 걸렸습니다!

IE8에서이 기능이 너무 느린 이유가 있습니까? IE9 모드, 크롬, 파이어 폭스 등에서 실행하면 기능이 빨라 보입니다.

+0

각 호출은 사용 방법 및 위치에 따라 DOM 리플 로우를 유발할 수 있습니까? – Bergi

답변

0

getBoundingClientRect은 Microsoft에서 IE5로 처음 소개되었으며 알려진 성능 문제는 없습니다.

jQuery를 UI, 그리고 다른 사람, 그것을 사용하고 과거에 그들이 그것을로 이동할 때, 굉장했다 : http://ejohn.org/blog/getboundingclientrect-is-awesome/

가 나는이 jQuery similar calculationgetBoundingClientRect 사이 비교 발견 :

getBoundingClientRect

보통 승리 http://jsperf.com/getboundingclientrect-vs-jquery 당신 귀하의 사이트가 IE8 호환 모드로 실행되고 있는데 때때로 성능이 저하 될 수 있습니다. IE8 브라우저에서 테스트 할 수 있습니까? 여기서 성능은 동일해야합니다.

+0

이번 주말에 IE8 VM을 설치하고 테스트 해 보겠습니다. 나는 그것이 단지 compat 모드가 느린 것을 바라고있다. –

+4

@AndrewDavey 동일한 문제가 발생합니다. 성능 문제가 호환성 모드의 부작용인지 확인 했습니까? –

+3

@LarsGrammel - 적절하다고 판단됩니다. http://xkcd.com/979/ – Bobson

관련 문제