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 のページ読み込み時に処理を行う方法に関する文書 を見てください。