アルパカDiary Pro

はてなブログProではありません

YUIを使ってもIEでdivのwidthが取れなかった件

少し前にこれでハマってた。


YUI3を使っていたのですが、IEでのみdivのwidthが取得出来なかった。

var _el = Y.get('#yuidiv');
alert(_el.get('clientWidth'));

多分これで合ってるはず…FireFoxとかsafariはOKだしなー。


ちなみにですが、IEでも明示的に「width=100px」とか書いてあると取れる。
でも動的にwidthが変わるようなdivだと無理だし。


なので、以下のような関数作って回避しました

function getDivWidth (div){ 
  return document.layers?
         div.clip.width:(div.offsetWidth||div.style.pixelWidth||0);
}
var _el = Y.get('#yuidiv');
alert(getDivWidth(_el._node));


なんか、「_node」とかいう使っちゃいけいないようなの使ってて微妙なのですが
とりあえずこれで回避できた。


YUI使ってもクロスブラウザに悩まされるとは思わなんだ。
とにもかくにも、IEは爆発した方がいいね!