2013-05-01 8 views
5

मैं आईई 9 का उपयोग कर रहा हूं, मेरे पेज का परीक्षण करने के लिए एफ 12 टूल्स का उपयोग करके आईई 8 मानकों मोड में डाल दिया। व्यूपोर्ट में क्या दिख रहा है, यह जानने के लिए पृष्ठ स्क्रिप्ट getBoundingClientRect का उपयोग करती है।आईई 8 में getBoundingClientRect धीमा क्यों है?

प्रोफाइलिंग टूल का उपयोग करके, मैं getBoundingClientRect पर बहुत समय ले रहा हूं। उदाहरण के लिए, समारोह में 244 कॉलों ने 4,361 एमएमएस का एक विशेष समय लिया!

क्या इस फ़ंक्शन को IE8 में इतना धीमा होने का कोई कारण है? IE9 मोड, क्रोम, फ़ायरफ़ॉक्स, आदि में चलते समय, फ़ंक्शन तेज़ लगता है।

+0

इसका प्रत्येक कॉल एक डीओएम रिफ्लो ट्रिगर कर सकता है, इस पर निर्भर करता है कि आप इसका उपयोग कैसे और कहाँ करते हैं? – Bergi

उत्तर

0

getBoundingClientRect पहली बार माइक्रोसॉफ्ट द्वारा आईई 5 में पेश किया गया था, और इसमें कोई ज्ञात प्रदर्शन समस्या नहीं थी।

jQuery यूआई, और दूसरों को, इसका इस्तेमाल और जब अतीत में वे इसे करने के लिए ले जाते हैं, भयानक था: http://ejohn.org/blog/getboundingclientrect-is-awesome/

मैं एक jQuery similar calculation और getBoundingClientRect के बीच तुलना पाया: http://jsperf.com/getboundingclientrect-vs-jquery आमतौर पर जीत getBoundingClientRect

आप आईई 8 संगतता मोड में आपकी साइट चला रहे हैं जो कभी-कभी प्रदर्शन को बढ़ा सकता है, क्या आप इसे वास्तविक आईई 8 ब्राउज़र में जांच सकते हैं? यहां प्रदर्शन वही होना चाहिए।

+0

मैं इस सप्ताह के अंत में एक आईई 8 वीएम स्थापित करने जा रहा हूं और परीक्षण कर रहा हूं। मुझे आशा है कि यह सिर्फ कंपैट मोड धीमा हो रहा है। –

+4

@AndrewDavey मैं एक ही समस्या में चल रहा हूं - क्या आपको पता चला कि प्रदर्शन समस्या केवल संगतता मोड का दुष्प्रभाव है या नहीं? –

+3

@ लार्सग्राममेल - यह उचित लगता है: http://xkcd.com/979/ – Bobson