« 不整脈 | main | ドイツ車にまつわるいい話 »

AlphaImageLoader利用Javascriptをdisplay:none;要素に

webデザイナのまがいもののような仕事をしている。

scriptaculousを使っているようなページを作成していて、IEにアルファチャンネル付きpng要素を描画させたい場合に、pngfix.jsのようなやり方をそのまま利用すると危険だ。何故ならdisplay:none;を指定されたオブジェクトの子としてのpng imageは、onLoad時点ではwidthもheightも0なので、pngfixで呼ばれたspan要素のwidth,heightが0になってしまうのである。
さらに、scriptaculous的イベント(fadeのような)発生直後にimg.widthをechoしてもゼロなので、イベント発生とpngfixのタイミングはずらした方が良い。
よってpngfix.jsを関数化して、イベントでpngを描画するようなimageはclass指定してsetTimeoutで呼んでやるのが良い。img.classNameで一つ一つ判断する。その他のpngにもclassを付加し、onLoad時にspan要素に変更する。

トラックバック

このエントリーのトラックバックURL:
http://polog.org/mt-tb.cgi/227

コメントを投稿

Powered by
Movable Type 3.34