クリックをオブザーブしたハンドラに送られる Event インスタンスの中身が IE だけ微妙に違ってた。
HTML
<div id="thumbnail"> <a href="images/image1.jpg" class="gallery"><img src="images/image1-thumb.jpg" alt="画像1" /></a> <a href="images/image2.jpg" class="gallery"><img src="images/image2-thumb.jpg" alt="画像2" /></a> <a href="images/image3.jpg" class="gallery"><img src="images/image3-thumb.jpg" alt="画像3" /></a> </div> |
Javascript
document.observe("dom:loaded", function (){$$('. gallery').each( function (element) { element.observe("click",clickHandler) }) } ); function clickHandler (event) { .... } |
prototype.jsを使ってハンドラに送られた Event インスタンスを調べてみた。
Object.keys(event); Object.values(event); |
IE には Event インスタンスに currentTarget
が存在しない。
また、 target
は [objcect] になっておりその中身も [object HTMLImageElement] な Firefox などとは若干違っている。
希望は
currentTarget : a
タグ
target : img
タグ
IE は currentTarget が無いので a
タグの DOM を取得するのにどうすんだろうが調べてみるきっかけ。
今回の script では a
タグの href が必要だっただけなので無理矢理ごまかした。
IE, target.href プロパティ。
target(img)に本来は存在しない href プロパティがあった。
中身は img タグ src の値。
な〜んかへんなの。
多分、IEがやっちまってるのだろうと納得しておく。
update 2009-09-09
イベントを発生させた要素を取得するメソッドがありました。
event.element(); |