Mit der Eigenschaft element.style können Sie nur die CSS-Eigenschaften kennen, die in diesem Element als Inline definiert wurden (programmgesteuert oder im style-Attribut des Elements definiert). Sie sollten den berechneten Stil erhalten.
Es ist nicht so einfach, dies browserübergreifend zu tun. Der IE hat seinen eigenen Weg über die element.currentStyle-Eigenschaft, und der von anderen Browsern implementierte DOM Level 2-Standardweg erfolgt über die document.defaultView.getComputedStyle-Methode.
Die beiden Methoden weisen Unterschiede auf. Beispielsweise erwartet die IE-Eigenschaft element.currentStyle, dass Sie auf die CSS-Eigenschaftsnamen zugreifen, die aus zwei oder mehr Wörtern in camelCase bestehen (z. B. maxHeight, fontSize, backgroundColor usw.). Die Standardmethode erwartet die Eigenschaften mit der Wörter, die durch Bindestriche getrennt sind (z. B. maximale Höhe, Schriftgröße, Hintergrundfarbe usw.). ......
function getStyle(el, styleProp) {
var value, defaultView = (el.ownerDocument || document).defaultView;
// W3C standard way:
if (defaultView && defaultView.getComputedStyle) {
// sanitize property name to css notation
// (hyphen 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;
}
}
Hauptreferenz-Stackoverflow