Properti element.style memberi tahu Anda hanya properti CSS yang didefinisikan sebagai sebaris pada elemen tersebut (secara terprogram, atau didefinisikan dalam atribut style elemen), Anda harus mendapatkan gaya yang dikomputasi.
Tidak begitu mudah untuk melakukannya dengan cara browser silang, IE memiliki caranya sendiri, melalui properti element.currentStyle, dan cara standar Level 2 DOM, yang diterapkan oleh browser lain adalah melalui metode document.defaultView.getComputedStyle.
Dua cara memiliki perbedaan, misalnya, properti IE element.currentStyle berharap Anda mengakses nama properti CSS yang terdiri dari dua kata atau lebih di camelCase (mis. MaxHeight, fontSize, backgroundColor, dll), cara standar mengharapkan properti dengan kata-kata yang dipisahkan dengan tanda hubung (mis. ketinggian maksimal, ukuran font, warna latar belakang, dll). ......
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;
}
}
Referensi utama stackoverflow