0

オプションページでいくつかの値を設定しています。これで問題なく動作しています。しかし、background.html またはコンテンツ スクリプトで設定されたデータにアクセスできません。メッセージングでこのようなことが可能であると読みましたが、私にとってはドキュメントが少しわかりにくいです。誰かが私を正しい方向に向けることができれば、それは良いことです. 例の話> オプション ページでこの値を設定していますlocalStorage.setItem("somedata" , "true"); 。次に、拡張機能を実行するページで同じデータにアクセスすると、次のようになります。

localStorage.getItem("somedata");

値はnullです。

4

1 に答える 1

0

コンテンツ スクリプトは、バックグラウンド ページから localStorage の値を直接読み取ることはできません。localStorage キーと値のペアを読みたい場合は、これを達成するための説明とコードを提供するこの回答を参照してください: Accessing global object from content script in chrome extension

前の方法でも機能しますが、代わりに API をお勧めしchrome.storageます。これはすべての拡張ページで使用できます。との大きな違いは、非同期APIlocalStoragechrome.storageあることです。chrome.storage

違いを説明する例を次に示します。

// synchronous localStorage
localStorage.setItem('keyname', 'value');
alert(localStorage.getItem('keyname'));

// asynchronous chrome.storage
chrome.storage.local.set({keyname: 'value'}, function() {
    chrome.storage.local.get('keyname', function(items) {
        alert(items.keyname);
    });
});

一見すると、chrome.storageAPI はより複雑に見えます。ただし、拡張機能内にデータを保存する場合は、これが最善の方法です。このlocalStorageアプローチでは、同じ機能を実現するために、より多くのコードが必要です (この回答の上にリンクした回答を参照してください)。また、非同期でもあります。

于 2012-10-13T21:06:25.773 に答える