element.style
संपत्ति आप केवल सीएसएस गुण है कि उस तत्व (प्रोग्राम के रूप में, या तत्व की शैली विशेषता में परिभाषित) में इनलाइन के रूप में परिभाषित किया गया पता देता है, तो आप गणना शैली मिलना चाहिए।
एक क्रॉस-ब्राउज़र तरह से यह करने के लिए इतना आसान नहीं है, IE element.currentStyle
संपत्ति के माध्यम से अपने तरीके से किया है, और डोम स्तर 2 मानक तरह, अन्य ब्राउज़रों द्वारा कार्यान्वित document.defaultView.getComputedStyle
विधि के माध्यम से है।
दो तरीके मतभेद हैं, उदाहरण के लिए, आईई element.currentStyle
संपत्ति है कि आप CamelCase (जैसे maxHeight
, fontSize
, backgroundColor
, आदि) में दो या अधिक शब्दों से बना सीसीएस संपत्ति के नाम का उपयोग उम्मीद करते हैं, मानक तरीका उम्मीद डैश से अलग शब्दों के साथ गुण (जैसे max-height
, font-size
, background-color
, आदि)।
इसके अलावा, आईई element.currentStyle
यूनिट में सभी आकारों को वापस कर देगा, (उदाहरण के लिए 12pt, 50%, 5em), मानक तरीका वास्तविक आकार को पिक्सेल में हमेशा गणना करेगा।
मैं कुछ समय पहले एक क्रॉस-ब्राउज़र समारोह है कि आप एक क्रॉस-ब्राउज़र तरह से गणना शैलियों पाने के लिए अनुमति देता है बनाया: रंग के लिए उदाहरण के लिए,
function getStyle(el, styleProp) {
var value, defaultView = (el.ownerDocument || document).defaultView;
// W3C standard way:
if (defaultView && defaultView.getComputedStyle) {
// sanitize property name to css notation
// (hypen separated words eg. font-Size)
styleProp = styleProp.replace(/([A-Z])/g, "-$1").toLowerCase();
return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);
} else if (el.currentStyle) { // IE
// sanitize property name to camelCase
styleProp = styleProp.replace(/\-(\w)/g, function(str, letter) {
return letter.toUpperCase();
});
value = el.currentStyle[styleProp];
// convert other units to pixels on IE
if (/^\d+(em|pt|%|ex)?$/i.test(value)) {
return (function(value) {
var oldLeft = el.style.left, oldRsLeft = el.runtimeStyle.left;
el.runtimeStyle.left = el.currentStyle.left;
el.style.left = value || 0;
value = el.style.pixelLeft + "px";
el.style.left = oldLeft;
el.runtimeStyle.left = oldRsLeft;
return value;
})(value);
}
return value;
}
}
ऊपर समारोह कुछ मामलों के लिए सही नहीं है , मानक विधि rgb (...) अंकन, IE पर वे उन्हें वापस आ जाएगी, क्योंकि वे परिभाषित किया गया में रंग वापस आ जाएगी।
मैं वर्तमान में इस विषय में एक लेख पर काम कर रहा हूं, आप इस समारोह में किए गए परिवर्तनों का पालन कर सकते हैं here।
संबंधित: http://stackoverflow.com/questions/2531737/javascript-incapable-of-getting-elements-max-height-via-element-style-maxheight – BalusC