ここには拡張機能開発の一般的な問題への答えを置いています。現在、これらは主に Firefox に対して書かれています。しかし、全てではありませんが、ほとんどは簡単に SeaMonkey, Thunderbird またはその他のアプリケーションに対しても言い換えられるはずです。
もし開発を始めるための記事をお探しでしたら、私たちのチュートリアル 拡張機能の作成方法 か MozillaZine のスタートチュートリアル をお試し下さい。拡張機能ウィザード を使うと拡張機能の作成を開始するためのテンプレートを生成できます。
デバッグ
拡張機能をデバッグしようとする前に開発のための設定をしなければなりません。
Venkman JavaScript デバッガーは複雑な分岐で役に立つでしょう。拡張機能コードを動作させるときには "Debug -> Exclude Browser Files" オプションを切っておくことを忘れないでください。
どうやってコードの中のエラーを見つけることができますか?
javascript.options.showInConsole を true に設定すると、エラーがエラーコンソールへ報告されるようになります。全ての JavaScript エラーをコンソールに出力することで、コード内のバグを見つけ出すのがより簡単になります。JavaScript デバッガアドオンの Venkman を使ってみるのもいいでしょう。
拡張機能が実行していることを表示するには?
alert()
か dump()
機能、Components.utils.reportError()
、または nsIConsoleService
を使うと、変数のデータやデバッグ用のテキストを表示することができます。
なぜ私のスクリプトは正しく動作しないのでしょうか?
あなたのスクリプトが期待通り動作しないなら、まずエラーコンソール (上 を見てください) で確認すべきです。
一般的なミスとして window を完全に読み込む前に DOM にアクセスしようとすることが挙げられます。スクリプトのトップレベル (つまり、全ての関数の外側) に初期化コードを置いているとこれが発生します。load
イベントリスナーを使い、window が読み込み終わってからコードを実行するようにします:
function exampleBrowserStartup(event) { // ここにスタートアップ用のコード } window.addEventListener("load", exampleBrowserStartup, false);
Web ページのドキュメントへアクセスできない
browser.xul オーバーレイから現在の Web ページを参照するには、ブラウザウィンドウ自体のドキュメントである document
の代わりに content.document
を使ってください。詳しいことは chrome コードで window を動作させるを見てください。
標準では XPCNativeWrapper が Web ページのスクリプトが定義したオブジェクトへのアクセス及びその他を妨害します。
XML パースエラーが出ましたがファイルに問題はないようです!
パースエラー (<font color="red">赤い文字列</font>と <font color="red">-------------^</font> が下部に出る) の原因としてよくあるのは、スクリプトや属性値の中に XML で特別な意味を持つ文字である & や < が存在する事によるものです。例えば
<button oncommand="window.open('https://example.com/q?param1=value¶m2=val2')"/>
または
<script>function lesser(a,b) { return a < b ? a : b; }</script>
この問題は次の方法のうち一つで解決できます。
- XML に矛盾しない表現に文字を置き換える (例: "&" -> "&", "<" -> "<")
- (スクリプトなどのテキストノードの場合) CDATA タグで囲う
<script><![CDATA[ function lesser(a,b) { return a < b ? a : b; } ]]></script>
- 別のファイルにスクリプトを置きそれを読み込む
<script type="application/x-javascript" src="our.js"/>
サンプルコード
何か便利なことをするためにどんなコードを使えばいいのかを調べるには、それと同じ事を行っている拡張機能 (もしくは Mozilla 自体の一部) を探して、そのコードを見るのが一番簡単です。(XPI ファイルと JAR ファイルは ZIP フォーマットを使っています。)
また、MDC の拡張機能関係の項目のリスト 、コードサンプル 、 MozillaZine のサンプルコードページ などのドキュメントも参照して下さい。
どこでヘルプをもっと得られますか?
拡張機能:その他の資料 と 拡張機能:コミュニティ を見てください。
ヘルプを求める前に、必ずデバッグ用の設定を行い、関係のあるメッセージがエラーコンソールに表示されていないかを確認してください。また、尋ねる前に少なくとも簡単な検索ぐらいはするのを忘れないで下さい。そしてこの FAQ を読んでください!