0

拡張機能から値(たとえばuserid)を保存してから、他のページでその値にアクセスしたいと思います。拡張機能内でのみCookieにアクセスできるため、Cookieを使用してアクセスすることはできません。

それを行う方法はありますか?

4

1 に答える 1

3

申し訳ありませんが、私が太っているだけかもしれませんが、あなたが何をしようとしているのかまだよくわかりません.

異なるドメイン間で持続する変数を作成したい場合は、chrome.storage を使用する必要があります。これは HTML5 の localStorage に似ていますが、いくつかの重要な改善点があります (ドメイン間で永続化することが私の主な機能です)。値の設定と取得の詳細については、次を参照してください。

http://developer.chrome.com/extensions/storage.html

これが必要なものでない場合は、あなたがしようとしていることの具体的な例を挙げてみてください。もう一度試します.

編集:例については、以下を参照してください。

次のように変数をストレージに設定できます (関数はオプションのパラメーターです)。

var storage = chrome.storage.local;
var myVal="foo";

storage.set({'myVar': myVal}, function() {
    alert('myVar has been saved in local storage');
});

次のように取得できます (関数はオプションではありません)。

storage.get('myVar', function(items) {
    if (items.myVar) {
        alert(items.myVar);
    }
});

'myVar' が storage.get({'myVar': ''}) によって定義されていない場合、デフォルト値を返すことができます。これにより、"if (items.myVar) {" 行でのチェックが省略されます。

編集: 注意すべき問題については、以下を参照してください。

まず、メソッドは非同期です。そう...

alert("1");
storage.get('myVar', function(items) {
    alert("2");
});
alert("3");

おそらく1、次に3、そして2を出力します。大したことではありませんが、事前に知っていれば、後で多くの再構築を節約できます。

次に、ストレージ容量には制限があることに注意してください。chrome.storage.sync (変数はすべてのユーザー ブラウザで自動的に同期されます) の場合、ストレージ スペースは約 100kb と非常に限られています。(最大 512 個の個別の変数など、他の制限もあります。上記のドキュメント リンクを参照してください)。基本的に、chrome.storage.sync はいくつかの小さな変数のみを対象としています。

chrome.storage.local には、約 5 MB のはるかに多くのストレージ容量があります (無制限のストレージ許可を設定しない限り)。chrome.storage.sync とは異なり、ストレージ chrome.storage.local には他の制限はありません。

セットがストレージ制限を超える場合、セットは失敗します。

第三に、変数名として変数を使用しても機能しません:

var myVal="foo";
var myVarName='myVar';

storage.set({myVarName: myVal}, function() {
    alert('THIS WILL NOT WORK');
});

私のように、あなたが本当にこのようなことをしたい/する必要がある場合、このようなことをする方法は、オブジェクトを作成し、それに変数をプロパティとして割り当ててから、オブジェクトをストレージに置くことです。例えば:

var myVarName='myVar';
var mySecondVarName='mySecondVar';

var myVal="foo";
var mySecondVal="bar";

var obj = {};
obj[myVarName] = myVal;
obj[mySecondVarName] = mySecondVal;
//add as many vars as you want to save to the storage 
//(as long as you do not exceed the max storage space as mentioned above.)

storage.local.set(obj);

その後、次の方法で値を取得できます。

chrome.storage.local.get(myVarName, function (items) {
    if (items[myVarName]) {
        alert('You got the value that was set to myVarName');
    }
});

または、mySecondVarName の値が必要な場合:

chrome.storage.local.get(mySecondVarName, function (items) {
    if (items[mySecondVarName]) {
        alert('You got the value that was set to mySecondVarName');
    }
});

そして、これらは入れ子にすることができます。

于 2012-09-05T21:23:25.063 に答える