You can go with getComputedStyle()
and currentStyle
to get the calculated styles for an element. This should do it:
function getDisplayType (element) {
var cStyle = element.currentStyle || window.getComputedStyle(element, "");
return cStyle.display;
}
To be a little clearer, computed styles contain values for every style property, even for those that don't have a style property set. Those values will be the default value so in the case of an unstyled <a>
element, display
will return inline
:
function getElementDefaultDisplay(tag) {
var cStyle,
t = document.createElement(tag),
gcs = "getComputedStyle" in window;
document.body.appendChild(t);
cStyle = (gcs ? window.getComputedStyle(t, "") : t.currentStyle).display;
document.body.removeChild(t);
return cStyle;
}
Tested in latest Firefox, Chrome and IE7/IE8.
Results:
> getElementDefaultDisplay("a")
inline
> getElementDefaultDisplay("div")
block
Update: edited to give preference to standards compliance/getComputedStyle()
in IE9, which supports both methods.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…