2016-07-15 22 views
1

Chrome拡張コンテンツスクリプトを使用してページに追加されるカスタムメニューを作成しました。拡張機能はすばらしく機能し、メニューは必要なときに表示されます。chrome.storageにアクセスするChrome拡張コンテンツスクリプト

私は少しさらに行くと、1または0のいずれかにmenuToggle VAR を定義するオン/オフスイッチでオプションページを追加したい、そしてそのvarはIF条件に添付されます。

IF menuToggle == 1 // Do something 
ELSE // console.log("var is 0, menu not loaded"); 

"localstorage.menuToggle = 1;を使用して拡張機能環境でこの作業を行うことができました。がありますが、これは私の拡張機能内のインスタンスに対してのみ機能し、コンテンツスクリプトはこのvarにアクセスできないことを理解しています。

chrome.storage APIはofficial docsでしたが、正直なところ、プログラミングの初期段階からは分かりませんでした。

chrome.storage.sync.setを使用する必要がありますが、これを適切に設定する方法と、コンテンツスクリプト内でデータを一度取得する方法のどちらかを正しく設定できませんでした。私は怒鳴るような何かを試してみましたが、それはうまくいきませんでした:

chrome.storage.sync.set({'menuToggle': '1'}, function(){}); 

質問をここに:私はsync.set後に関数を定義する必要がありますか?後で機能を持たなくてもデータを保存することは可能ですか?私が間違ってやっている何

var varMenuToggleDefault = 1; 
localStorage.varMenuToggle = 1; 

$("input:checkbox[name=onoffswitch]").change(function() { 
    if ($(this).is(':checked')) { 
    localStorage.varMenuToggle = varMenuToggleDefault; 
    console.log('Switch is ON'); 
    console.log("Var is: " + localStorage.varMenuToggle); 
    } else { 
    localStorage.varMenuToggle = "0"; 
    console.log('Switch is OFF'); 
    console.log("Var is: " + localStorage.varMenuToggle); 
    } 

if (localStorage.varMenuToggle == 1) { 
// Load the menu 
} else { 
// console.log("varMenuToggle is 0. Menu NOT loaded"); 
}; 

/行方不明:

ベローは、私がのlocalStorageで使用されるコードのですか?

答えて

2

chrome.storage関数は非同期です。大括弧の後の関数はコールバック関数と呼ばれ、操作が完了すると起動します。コールバック機能は必要ありません。

データを元に戻すことは少し異なります。関数は非同期であるので、あなたが戻ってデータを取得したい場合は、必見は、コールバック関数を持って、

chrome.storage.sync.get("menuToggle", function(data) { 
    var menuToggle = data.menuToggle; 
} 

:あなたは、あなたのデータをこのようにアクセスすることができます。コールバック関数は、設定した値を含むmenuToggleプロパティを持つオブジェクトを受け取ります。

+0

すばやく簡単に返信いただきありがとうございます。私が理解したところでは、まず値を取得するために** sync.get **を要求する必要があるので、コールバック内のコンテンツスクリプト内にif条件を挿入する必要があります。 ?ような何か:{ VAR menuToggle = data.menuToggle; 場合(menuToggle == 1){何かを行う}} 'chrome.storage.sync.get( "menuToggle"、機能(データ)' – SoMeGoD

+0

私は苦労私はそれが最良の方法であるかどうかは分かりませんが、私はイベントページを使って初めてvarを設定しました分割払い後 – SoMeGoD

関連する問題