« firefoxアドオン作り | メイン | 日本人の真実? »

addEventListenerの話

2010年09月02日

addEventListenerの話
[ Tips ]

ブラウザゲームの自動実行プログラムを作っていてのお話。

Mozillaのサイトにタブブラウザ用コードのサンプル&機能紹介があります。

新しく開かれたタブのコンテンツについて仕事をしたいときは、内容がロードされ終わるまで待つ必要があります。

// 間違った方法(ページがロードし終わってない)
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);

ここのサイトに倣って、「新しいタブのコンテンツの操作」の方法を作ったわけですが、なぜか、一つのHTMLを読み込むと「function()」が5回走ります(汗

単純な処理のときは早めに、removeEventListenerしてやれば、走るfunction()を1~2回程度で止めることが出来たので、なんとか実用にこぎつけていたのですが、複雑な処理を始めるともうダメ(ノД`)
データを取得して、その情報を解析して、次のHTMLを呼び出して…とやっていると、加速度的に実行イベントが増えてしまう(汗

おかしいなぁ~と調べつつも理由はよく分かりません(汗


そんな中、あるサイトに、HTML events typeの紹介として、
 load … 新規ウィンドウごとに挙がるイベント
 DOMContentLoaded … 新規文書ごとに挙がるイベント
があり、後者を指定することで、うまく行きました。

しかし、みなさん、どこのマニュアルを見ているのよ?MozillaのMDCサイトからリンクされているページは結構リンク切れがあったりして、今ひとつ役に立たなかったり、ようやくたどり着いてみても説明不足にしか思えない。
自分の基礎レベル不足しているのかなぁ~
Document Object Model Events英語のサイトも読んでみましたが、DOMContentLoadedの説明は一体いずこ?。・゚・(ノД`)・゚・。
マニュアルの読み方、教えて欲すぃ… orz

Posted by りじんぐ at 19:45

About

2010年09月02日 19:45に投稿されたエントリーのページです。

ひとつ前の投稿は「firefoxアドオン作り」です。

次の投稿は「日本人の真実?」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type