0

いくつかの基本的な拡張機能を作成しようとしている初心者です。拡張機能を機能させるには、いくつかのデータを初期化する必要があるため、私が行ったことは、background.js次のようなものを宣言した内部にあります。

localStorage["frequency"] = 1; //I want one as Default value. This line is not inside any method, its just the first line of the file background.js

ユーザーは [オプション] ページに移動し、GUI を使用して上記の変数を任意の値に変更できます。ユーザーが UI で変更するとすぐに、その値が更新されます。

問題は、マシンが再起動されるたびに background.js がリロードされることを理解することです。そのため、マシンを再起動して Chrome を開くたびに、頻度の値が 1 に戻ります。これを回避するには、この値を初期化する必要がありますか?

4

3 に答える 3

1

特定のデフォルト キーを使用することもできます。が設定されていない場合frequencyは、 を試してくださいdefault-frequency。デフォルトのキーは、background.js で引き続き設定または定義されます。

私はこのような関数でそれをワンステップで行うのが好きです

function storageGet(key,defaultValue){
    var item = localstorage.getItem(key);
    if(item === null)return defaultValue;
    else return item;
}

(仕様によると、値が設定されていない場合はlocalstorage が返される必要がありnullます。)したがって、あなたの場合は次のようになります

var f = storageGet("frequency",1);

さらに、 chrome.storage APIのチェックアウトに興味があるかもしれません。これは localstorage と同様に使用されますが、拡張機能に役立つ追加機能を提供します。特に、さまざまな Chrome ブラウザー間でのユーザー データの同期をサポートしています。

edit apsillers の異議に関して if ステートメントを変更しました。しかし、仕様ではnullであるべきだと言っているので、未定義の代わりにそれをチェックすることは理にかなっていると思います.

于 2012-08-30T14:01:57.767 に答える
1

これは別の解決策です:

// background.js

initializeDefaultValues();

function initializeDefaultValues() {
    if (localStorage.getItem('default_values_initialized')) {
        return;
    }

    // set default values for your variable here
    localStorage.setItem('frequency', 1);

    localStorage.setItem('default_values_initialized', true);
}
于 2012-08-30T14:17:11.290 に答える
0

問題は構文にあると思います。localStorage 値を取得および設定するには、次を使用してみてください。

// to set
localStorage.setItem("frequency", 1);

// to get
localStorage.getItem("frequency");
于 2012-08-30T13:28:01.073 に答える