X-0000-2 XULアプリの開発環境を整える

普通にMozillaやNS7をインストールしただけだと、XULをいじるのにはちょっと不便です。以下の設定をしておいて、あらかじめ開発環境を整えておくことをお勧めします。

XULのキャッシュを切る

プロファイルディレクトリのprefs.jsを開き、以下の行を追加して下さい。

user_pref("nglayout.debug.disable_xul_cache", true);

XULのキャッシュが有効だと、XULを書き換えても、Moz/NS自体を再起動するまで変更が反映されません。これは面倒きわまりないです。ウィンドウを開き直すだけで変更を反映させるには、隠し設定を使ってキャッシュを切る必要があります。

JavaScriptのエラー表示を厳密にする

プロファイルディレクトリのprefs.jsを開き、以下の行を追加して下さい。

user_pref("javascript.options.strict", true);
user_pref("javascript.options.showInConsole", true);

「Tool(ツール)」→「Web Development(Web開発)」から起動できるJavaScriptコンソールには、実行したJavaScriptのエラーが表示されますが、通常はWebページ内のJavaScriptエラーしか報告されません。XUL自体のJavaScriptエラーを表示させるには、これらの隠し設定を使う必要があります。

dump() を有効にする

プロファイルディレクトリのprefs.jsを開き、以下の行を追加して下さい。

user_pref("browser.dom.window.dump.enabled", true);

windowオブジェクトのdumpメソッドを使うと、 dump("Initialize complete\n"); というような書式で、後述するコンソールウィンドウにメッセージを表示させることができます。dumpでのメッセージ表示はalertと違って処理が中断されないため、処理の進行状況をリアルタイムで監視することができます。

dump()で出力したメッセージを見る――コンソールモード

JavaScriptコンソールやJavaコンソールとは別に、Moz/NS自身にもコンソールがあります。Windows環境では netscp.exe -console という具合に-consoleオプションを付けると、コンソール付きでMoz/NSを起動することができます。

window.dumpメソッドに渡したメッセージはコンソールの中にリアルタイムで出力されます。他の処理を中断させずに済むため、デバッグの上で大きな助けになるでしょう。

Linux、FreeBSD、Unixなどの環境では、Windowsでのコンソールモードのような特別なオプションは要りません。ターミナルからコマンドラインでMoz/NSを起動すれば、そのままターミナルにメッセージが出力されるようになります。ちなみに、Mac OS Xでもこの方法を使います