XUL アプリ: 新しくページを読み込んだ時にコードを実行する方法

普通、web ページ内に置いた JavaScript コードがページ読み込み完了時に処理を行うためには、

window.addEventListener("load", func, false);
などと書きます。

が、XUL アプリケーションで上のような書き方をすると、ページ読み込み時ではなく XUL アプリケーションのロード時に処理 func が行われます。 ではどうすればいいかというと、window オブジェクトにイベントリスナを追加するのではなく、ブラウザのページ表示領域 (id="appcontent" の要素) に DOMContentLoaded イベントをキャッチするイベントリスナを追加すればよいのです。

var myExtension = {
init: function() {
// ページの表示領域取得
var appcontent = document.getElementById("appcontent");
if( appcontent ) {
// DOMContentLoaded イベントをキャッチするイベントリスナを追加
appcontent.addEventListener("DOMContentLoaded", myExtension.listener, true);
}
},
// DOMContentLoaded イベントをキャッチするイベントリスナ
listener: function( aEvent ) {
// "doc" はイベントが発生したドキュメント
var doc = aEvent.originalTarget;
// ここで処理を行う
}
}

window.addEventListener("load", function(evt) { myExtension.init(); }, false);

詳しくは MDC のページ読み込み時に処理を行う方法に関する文書 を見てください。