--- title: Extension Frequently Asked Questions slug: Extension_Frequently_Asked_Questions tags: - Add-ons - Extensions translation_of: Archive/Mozilla/Extension_Frequently_Asked_Questions ---

ここには拡張機能開発の一般的な問題への答えを置いています。現在、これらは主に Firefox に対して書かれています。しかし、全てではありませんが、ほとんどは簡単に SeaMonkey, Thunderbird またはその他のアプリケーションに対しても言い換えられるはずです。

もし開発を始めるための記事をお探しでしたら、私たちのチュートリアル 拡張機能の作成方法MozillaZine のスタートチュートリアル をお試し下さい。拡張機能ウィザード を使うと拡張機能の作成を開始するためのテンプレートを生成できます。

必ず開発用の設定をしてください

{{ 英語版章題("Debugging") }}

デバッグ

拡張機能をデバッグしようとする前に開発のための設定をしなければなりません。

Venkman JavaScript デバッガーは複雑な分岐で役に立つでしょう。拡張機能コードを動作させるときには "Debug -> Exclude Browser Files" オプションを切っておくことを忘れないでください。

{{ 英語版章題("How can I see errors in my code?") }}

どうやってコードの中のエラーを見つけることができますか?

javascript.options.showInConsoletrue に設定すると、エラーがエラーコンソールへ報告されるようになります。全ての JavaScript エラーをコンソールに出力することで、コード内のバグを見つけ出すのがより簡単になります。JavaScript デバッガアドオンの Venkman を使ってみるのもいいでしょう。

{{ 英語版章題("How can I display what my extension is doing?") }}

拡張機能が実行していることを表示するには?

alert()dump() 機能、Components.utils.reportError()、または nsIConsoleService を使うと、変数のデータやデバッグ用のテキストを表示することができます。

{{ 英語版章題("Why doesn\'t my script run properly?") }}

なぜ私のスクリプトは正しく動作しないのでしょうか?

あなたのスクリプトが期待通り動作しないなら、まずエラーコンソール ( を見てください) で確認すべきです。

一般的なミスとして window を完全に読み込む前に DOM にアクセスしようとすることが挙げられます。スクリプトのトップレベル (つまり、全ての関数の外側) に初期化コードを置いているとこれが発生します。load イベントリスナーを使い、window が読み込み終わってからコードを実行するようにします:

function exampleBrowserStartup(event)
{
  // ここにスタートアップ用のコード
}
window.addEventListener("load", exampleBrowserStartup, false);

{{ 英語版章題("Accessing the document of a webpage doesn\'t work") }}

Web ページのドキュメントへアクセスできない

browser.xul オーバーレイから現在の Web ページを参照するには、ブラウザウィンドウ自体のドキュメントである document の代わりに content.document を使ってください。詳しいことは chrome コードで window を動作させるを見てください。

標準では XPCNativeWrapper が Web ページのスクリプトが定義したオブジェクトへのアクセス及びその他を妨害します。

{{ 英語版章題("I get an XML parsing error, but the file looks fine!") }}

XML パースエラーが出ましたがファイルに問題はないようです!

パースエラー (赤い文字列-------------^ が下部に出る) の原因としてよくあるのは、スクリプトや属性値の中に XML で特別な意味を持つ文字である & や < が存在する事によるものです。例えば

<button oncommand="window.open('http://example.com/q?param1=value&param2=val2')"/>

または

<script>function lesser(a,b) { return a < b ? a : b; }</script>

この問題は次の方法のうち一つで解決できます。

  1. XML に矛盾しない表現に文字を置き換える (例: "&" -> "&amp;", "<" -> "&lt;")
  2. (スクリプトなどのテキストノードの場合) CDATA タグで囲う
    <script><![CDATA[
       function lesser(a,b) {
         return a < b ? a : b;
       }
     ]]></script>
  3. 別のファイルにスクリプトを置きそれを読み込む
    <script type="application/x-javascript" src="our.js"/>

{{ 英語版章題("Example code") }}

サンプルコード

何か便利なことをするためにどんなコードを使えばいいのかを調べるには、それと同じ事を行っている拡張機能 (もしくは Mozilla 自体の一部) を探して、そのコードを見るのが一番簡単です。(XPI ファイルと JAR ファイルは ZIP フォーマットを使っています。)

また、MDC の拡張機能関係の項目のリストコードサンプルMozillaZine のサンプルコードページ などのドキュメントも参照して下さい。

{{ 英語版章題("Where can I get more help?") }}

どこでヘルプをもっと得られますか?

拡張機能:その他の資料拡張機能:コミュニティ を見てください。

ヘルプを求める前に、必ずデバッグ用の設定を行い、関係のあるメッセージがエラーコンソールに表示されていないかを確認してください。また、尋ねる前に少なくとも簡単な検索ぐらいはするのを忘れないで下さい。そしてこの FAQ を読んでください!



{{ languages( { "de": "de/Erweiterungen_FAQ", "en": "en/Extension_Frequently_Asked_Questions", "es": "es/Preguntas_frecuentes_sobre_Extensiones", "fr": "fr/Foire_aux_questions_sur_les_extensions", "it": "it/Domande_frequenti_sulle_Estensioni", "pl": "pl/Cz\u0119sto_zadawane_pytania_dotycz\u0105ce_rozszerze\u0144", "ru": "ru/FAQ_\u043f\u043e_\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c" } ) }}