アドオンをインストールするときに、ユーザーにユーザー名などを取得するように求める必要があります。その後、それを保存し、再度要求するべきではありません。このプロンプトをどこに配置しますか? install.rdf
? browser.xul
?
2 に答える
拡張機能のインストール時にコードを実行する明示的なメカニズムはありません。拡張機能を初めて実行するときに実行する必要があります。最も簡単な方法は、ユーザー名が既に設定されているかどうかを確認することです。そうでない場合は、プロンプトを表示します。
モーダル ダイアログを表示することはお勧めしません。モーダル ダイアログは、特に 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 回だけ読み込まれるため、調整の問題は発生しません。
アドオンリスナーを使用してみてください https://developer.mozilla.org/en/Addons/Add-on_Manager/AddonListener#onInstalling%28%29
または設定を使用して: https://stackoverflow.com/a/958944/1360985