यदि आप अभी भी रुचि रखते हैं तो मैंने इस समस्या को हल कर लिया है। समाधान काफी जटिल है। असल में, आपको तत्व के लिए एक साधारण एचटीसी संलग्न करने की आवश्यकता है और इसके क्लाइंटविड्थ/ऊंचाई को कैश करना होगा।
सरल एचटीसी इस तरह दिखता है:
<component lightweight="true">
<script>
window.clientWidth2[uniqueID]=clientWidth;
window.clientHeight2[uniqueID]=clientHeight;
</script>
</component>
आप सीएसएस का उपयोग कर एचटीसी साथ जोड़ने की आवश्यकता:
.my-table td {behavior: url(simple.htc);}
याद रखें कि आप केवल IE8 के लिए व्यवहार संलग्न करने के लिए की जरूरत है!
फिर आप कैश की गई मूल्यों के लिए ही टिककर खेल बनाने के लिए कुछ जावास्क्रिप्ट का उपयोग करें:
var WIDTH = "clientWidth",
HEIGHT = "clientHeight";
if (8 == document.documentMode) {
window.clientWidth2 = {};
Object.defineProperty(Element.prototype, "clientWidth2", {
get: function() {
return window.clientWidth2[this.uniqueID] || this.clientWidth;
}
});
window.clientHeight2 = {};
Object.defineProperty(Element.prototype, "clientHeight2", {
get: function() {
return window.clientHeight2[this.uniqueID] || this.clientHeight;
}
});
WIDTH = "clientWidth2";
HEIGHT = "clientHeight2";
}
सूचना है कि मैं स्थिरांक चौड़ाई/ऊंचाई बनाया। आप अपने तत्वों की चौड़ाई/ऊंचाई पाने के लिए इन का उपयोग करना चाहिए:
var width = element[WIDTH];
यह जटिल है, लेकिन यह काम करता है। मुझे आपके जैसा ही समस्या थी, क्लाइंटविड्थ का उपयोग अविश्वसनीय रूप से धीमा था। यह समस्या को बहुत अच्छी तरह से हल करता है। यह अभी भी तेज़ आईई 7 नहीं है लेकिन यह फिर से उपयोग करने योग्य है।
स्रोत
2009-08-23 20:25:36
हाँ संगतता मोड में स्विच करने से यह बेहतर प्रदर्शन करता है, हालांकि यह मेरे यूआई के अन्य हिस्सों को तोड़ता है क्योंकि यह आईई 7 की तरह बिल्कुल प्रस्तुत नहीं करता है। एक समाधान की उम्मीद कर रहा था जिसमें संगतता का उपयोग शामिल नहीं था, हालांकि यह एकमात्र विकल्प हो सकता है। – Element
मैं यह नहीं कह रहा हूं कि यह आपके मामले में समस्या है, लेकिन पिछली बार जब मैंने आईई 7 और आईई 8 के बीच विसंगतियों को प्रस्तुत किया था तो मुझे पता चला कि मेरे कोड विशेष रूप से एचटीएमएल/सीएसएस में बग थी। संगतता मोड समस्या को हल करने लग रहा था लेकिन मैं इसे स्वीकार नहीं करना चाहता था। तो मैं शायद वैधकर्ताओं के माध्यम से कोड चलाने शुरू कर दूंगा। कौन जानता है, आप कुछ याद कर सकते हैं। - मैंने किया। ;) –