0

アドオンをインストールするときに、ユーザーにユーザー名などを取得するように求める必要があります。その後、それを保存し、再度要求するべきではありません。このプロンプトをどこに配置しますか? install.rdf? browser.xul?

4

2 に答える 2

1

拡張機能のインストール時にコードを実行する明示的なメカニズムはありません。拡張機能を初めて実行するときに実行する必要があります。最も簡単な方法は、ユーザー名が既に設定されているかどうかを確認することです。そうでない場合は、プロンプトを表示します。

モーダル ダイアログを表示することはお勧めしません。モーダル ダイアログは、特に Firefox の起動時に突然表示される場合、ユーザーにとって非常に迷惑です。代わりに、ページをタブで開く必要があります。少し面倒なこと: Firefox は、起動時に以前のセッションを復元している可能性があります。ページを開くのが早すぎると、セッション復元メカニズムによってページが置き換えられる可能性があります。sessionstore-windows-restoredしたがって、通知を待つ必要があります。次のようなものが機能するはずです。

Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
Components.utils.import("resource://gre/modules/Services.jsm");

var observer = {
  observe: function(subject, topic, data)
  {
    Services.obs.removeObserver("sessionstore-windows-restored", this);

    var browser = window.getBrowser();
    browser.loadOneTab("chrome://...", {inBackground: false});
  },
  QueryInterface: XPCOMUtils.generateQI([
    Components.interfaces.nsIObserver,
    Components.interfaces.nsISupportsWeakReference
  ])
};
Services.obs.addObserver("sessionstore-windows-restored", observer, true);

最後の複雑な点は、コードがおそらくブラウザー ウィンドウ オーバーレイから実行されていることです。つまり、復元されたセッションに複数のウィンドウが含まれている場合、コードのインスタンスが複数存在することになります。ただし、すべてのブラウザー ウィンドウで最初に実行するページを開くのではなく、上記のコードを 1 回だけ実行することをお勧めします。したがって、おそらくPreferencesを介して、何らかの方法で調整する必要があります。少し複雑ですが、より良い解決策は、JavaScript コード モジュールを拡張機能に含めることです。コード モジュールは 1 回だけ読み込まれるため、調整の問題は発生しません。

于 2012-05-21T06:58:27.460 に答える
0

アドオンリスナーを使用してみてください https://developer.mozilla.org/en/Addons/Add-on_Manager/AddonListener#onInstalling%28%29

または設定を使用して: https://stackoverflow.com/a/958944/1360985

于 2012-05-19T00:30:52.480 に答える