如何为Chrome扩展名设置一个简单的动态变量到chrome.storage.local.set?

时间:2015-09-15 19:27:22

标签: javascript jquery html google-chrome-extension local-storage

我有一个滑块,我希望能够将值设置为本地存储,以便我可以在网页上动态使用此值。

我需要帮助的部分是chrome.storage.local.set(v);

$('#slider').on('change', function () {
    var v = $(this).val();
    $( 'div').each(function () {
        this.style.setProperty( 'margin', '10px '+v+'px', 'important' );
    });
    chrome.storage.local.set(v);
});

变量工作正常,我只需要能够将其保存到localstorage中,以便我可以使用它。它在页面重新加载之前工作,所以我现在需要的是能够将它存储到存储中,这样在重新加载该页面时就可以保存它。

更新:这就是你要说的吗?

$('#slider').on('change', function () {
    var v = $(this).val();
    var theKeyForV = chrome.storage.local.get({"keyforv" : v}, 
    chrome.storage.local.set({"keyforv" : v}, 
    function(){ 
        // callback (what goes here?)
    });
    $( 'div').each(function () {
        this.style.setProperty( 'margin', '10px '+theKeyForV+'px', 'important' );
    });
});

2 个答案:

答案 0 :(得分:1)

您可能需要多关注api。 chrome.storage.local的类型为StorageArea。因此,chrome.storage.local.set的第一个(也是唯一的)参数是“一个对象,它给每个键/值对更新”。你只是给了那个对象的后半部分。尝试: fail

答案 1 :(得分:1)

您可以这样使用:

// Set
var dataObj = {};
dataObj["key1"] = "vaule1";
// dataObj["key2"] = "vaule2"; // if you want to set value more than one key.
chrome.storage.local.set(dataObj, function() {
  if(!chrome.runtime.lastError){
      // set storage value successfully.
  }
});

// Get
var dataObj = ["key1"];
// var dataObj = ["key1", "key2"]; // if you want to get value more than one key. 
chrome.storage.local.get(dataObj, function (callback){
   if(callback && callback["key1"]){
     // To Do: handle callback["key1"].
    }
});

// Remove
var dataObj = ["key1"];
// var dataObj = ["key1", "key2"]; // if you want to remove value more than one key.
chrome.storage.local.remove(dataObj, function(callback) {
   if(!chrome.runtime.lastError){
      // remove successfully.
  }
});

要了解详情,请参阅chrome.storage