関数メモ IEとgeckoで適用されているスタイルを得る。

IEのcurrentStyleとDOMのgetComputedStyleを1個にまとめてみる。


function getCurrentStyle(obj,propertyName){
var Value = '';
if(document.body.currentStyle) {
while(propertyName.match(/-([a-z])/)){
var S = RegExp.$1.toUpperCase();
propertyName = propertyName.replace(/-[a-z]/,S);
}
Value = obj.currentStyle[propertyName];
} else if(document.defaultView) {
Value = document.defaultView.getComputedStyle(obj,null).getPropertyValue(propertyName);
}
return Value;
}

//使用例 id='hoge'の要素に適用されているスタイル(padding-top)を得る。
var Hoge = document.getElementById('hoge');
var Result = getCurrentStyle(Hoge,'padding-top');

※値がとれなかった場合とかは想定外。とりあえず必要で作ったけど応用が利きそうな気がしたのでメモ。


で、気が付いたこと
border:1px none black;
とスタイルを書いて border-width を調べると
IEでは 1px が geckoでは 0px が返る。

せっかく一つにまとめられたと思ったのに…
このぶんだと結構違いがあるんだろうね。あー鬱陶しい。