1

Firefoxのコンテキストメニューから呼び出すことができる一連の小さな関数を実装するFirefox拡張機能があります。各設定のラジオグループを表示する設定ウィンドウを作成し、Firefoxのメインメニューに機能を表示したり、拡張機能によって作成されたサブメニューに表示したり、非表示にしたりできるようにしました。これは、各拡張機能でまったく同じように機能しますが、変更されるのは、プリファレンスID、プリファレンス名、呼び出される関数名、および各ラジオグループのラベルだけです。関数ごとにこれらの4つの文字列を含む配列を作成してから、設定ごとに同じコードをコピーして貼り付けるのではなく、すべての設定を動的に定義することは可能ですか?

設定ウィンドウでXULを動的に定義できると確信しています。ただし、pref()コマンドを使用してdefaultsフォルダーでデフォルト設定を定義する方法がわかりません(拡張機能の別の場所で定義された文字列にアクセスする方法がわかりません)。また、preferences.xulファイルの定義を動的に定義できるかどうか、または入力する必要があるかどうかもわかりません。

また、これは良い考えですか、悪い考えですか。関数の追加/削除が簡単になると思っていました。

4

1 に答える 1

1

私には良い考えのように聞こえます。静的XULファイルで実行できることはすべて、DOM関数を使用してXULウィンドウのコンテンツを作成することで動的に実行できます(のコンテンツを含むpreferences.xul)。デフォルト値に関する限り、値がまだ設定されていない場合は、ブラウザの起動時に設定APIを使用して手動で設定できます。オブザーバーサービスを使用してprofile-after-change通知を処理できます。環境設定APIを使用して、設定にすでに値が設定されているかどうかを確認し、設定されていない場合は、選択したデフォルト値に設定します。

設定がすでに存在するかどうかを確認するには、適切なnsIPrefBranch方法を使用して設定を取得してみてください。例外がスローされた場合、その例外は存在しません。

于 2012-10-17T07:31:45.650 に答える