クリックをオブザーブしたハンドラに送られる 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> |
<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) {
....
} |
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); |
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
イベントを発生させた要素を取得するメソッドがありました。