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要素に変更する。