トップ «前の日記(2009-10-31) 最新 次の日記(2009-11-08)» 編集

Ussy Diary


2009-11-04

[Firefox][JavaScript]クリックイベントを発生させる

Firefox では createEvent を利用することで要素にクリックイベントを発生させることができます。(IE ではまた別の関数が提供されています)ためしに Yahoo! JAPAN のトップページで Firebug を開いて、下のコードを実行すると経済タブをコードから開けます。

var elem = document.getElementById('economy');
var event = document.createEvent('MouseEvents');
event.initEvent('click', true, true);
elem.dispatchEvent(event);

イベントを実行する dispatchEvent には戻り値があって、要素内で発生したイベントリスナーでキャンセルされた場合 false を返し、そうでない場合は true を返します。見た目は anchor だけれども、内部のクリックイベントリスナーで preventDefault 関数を呼び出したり、リスナ内で return false; を返している anchor はクリックして終わり、そうでないものはページを開くといったこともできます。

if (!elem.dispatchEvent(event)) {
  return;
}

window.open(elem);

他のコードを見ていて window.open 関数に anchor 要素を渡してもページを開いてくれることを知りました。軽くリファレンスみたり、検索してみたのですがどこにも書いてなくて怖いです。