1

Firefox拡張機能で設定を使用しようとしています。これらを作成して読み取ることはできますが、変更されたときに関数を実行しようとすると、問題が発生します。私はMDNから提案されたフレームワークを使用しています(変更を加えて、私が望むことを実行します)。これはここでの正確なコードです:

observe: function(aSubject, aTopic, aData) {
if (aTopic != "nsPref:changed")
{
return;
}
switch (aData) {
    case "username":
        var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
        var username = prefManager.getCharPref("extensions.alexandriauplink.username");
        // extensions.myextension.pref1 was changed
        break;
    case "password":
        var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
        var password = prefManager.getCharPref("extensions.alexandriauplink.password");
        alert(password);
        break;
}
var password = prefManager.getCharPref("extensions.alexandriauplink.password");
var username = prefManager.getCharPref("extensions.alexandriauplink.username");
alert( "username:" + username +"|" + "password:" + password);
}

問題は、オプションダイアログでプリファレンスを変更すると、変更されたプリファレンスごとにこの関数が3回トリガーされることです。よろしければ、よろしくお願いします。

4

1 に答える 1

1

コメント提供者が指摘したように、これはFirefoxの複数のウィンドウが開いていることが原因でした。それぞれがイベントを発生させていました。

于 2013-01-24T23:21:46.547 に答える