2010年09月02日
addEventListenerの話[ Tips ]
ブラウザゲームの自動実行プログラムを作っていてのお話。
Mozillaのサイトにタブブラウザ用コードのサンプル&機能紹介があります。
単純な処理のときは早めに、removeEventListenerしてやれば、走るfunction()を1~2回程度で止めることが出来たので、なんとか実用にこぎつけていたのですが、複雑な処理を始めるともうダメ(ノД`)
データを取得して、その情報を解析して、次のHTMLを呼び出して…とやっていると、加速度的に実行イベントが増えてしまう(汗
おかしいなぁ~と調べつつも理由はよく分かりません(汗
そんな中、あるサイトに、HTML events typeの紹介として、
load … 新規ウィンドウごとに挙がるイベント
DOMContentLoaded … 新規文書ごとに挙がるイベント
があり、後者を指定することで、うまく行きました。
しかし、みなさん、どこのマニュアルを見ているのよ?MozillaのMDCサイトからリンクされているページは結構リンク切れがあったりして、今ひとつ役に立たなかったり、ようやくたどり着いてみても説明不足にしか思えない。
自分の基礎レベル不足しているのかなぁ~
Document Object Model Events英語のサイトも読んでみましたが、DOMContentLoadedの説明は一体いずこ?。・゚・(ノД`)・゚・。
マニュアルの読み方、教えて欲すぃ… orz
// 間違った方法(ページがロードし終わってない)
var newTab = gBrowser.getBrowserForTab(gBrowser.addTab("http://www.google.com/"));
alert(newTab.contentDocument.body.innerHTML);
// よりよい方法
var newTab = gBrowser.getBrowserForTab(gBrowser.addTab("http://www.google.com/"));
newTab.addEventListener("load", function() { newTab.contentDocument.body.innerHTML = "<div>hello world</div>"; }, true);