【问题标题】:How to set a simple dynamic variable into chrome.storage.local.set for a chrome extension?如何为 chrome 扩展设置一个简单的动态变量到 chrome.storage.local.set?
【发布时间】:2015-09-18 06:26:30
【问题描述】:

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

我需要帮助的部分是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);
});

这个变量工作得很好,我只需要能够将它保存到本地存储中以便我可以使用它。它在页面重新加载之前工作,所以我现在需要的是能够将它放入存储中,以便在重新加载该页面时保存值。


更新:这是你说的吗?

$('#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' );
    });
});

【问题讨论】:

  • 到达那里。为什么有keyforvtheKeyForVv?而且你永远不会关闭你的get 电话。你给人的印象是这是你第一次编程。扩展是一种不好的方法,因为您必须同时学习编程、javascript 特定编程和扩展特定 javascript。但是对于您最初的问题:仅在重新加载页面时才需要存储。动态使用只需要普通的 javascript。
  • 需要存储,以便它可以保持页面加载。但是,这个变量变化很大,但是,最新的变量应该在页面重新加载时使用。还是不知道怎么使用localstorage里面的东西。

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


【解决方案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

【讨论】:

  • 谢谢,但是如何添加变化的动态变量?我不知道值,值是动态变化的,值本身需要是一个变量,而不是一个值。将有数百个值不断变化,我需要它在每次更改时删除并设置新值。您的代码似乎有点复杂,我只需要能够插入一个动态设置到本地存储中的字符串。
  • 我如何得到它并插入它来代替变量?我用什么?我应该输入+key1+ 而不是+v+
  • @sdfasdfacdsgcxzg dataObjcallback 是具有您需要的变化值的对象。当他们改变时,你可以再次set他们。顺便说一句,localStoragechrome.storage.local 是不同的东西。
  • 对不起,我还是不明白你的情况。也许你应该让我们知道:1)你的价值在哪里改变? 2) 你想保存所有变化的值还是只保存“v”的最新值?在您的代码中,也许您可​​以使用这种方式: $('#slider').on('change', function () { var v = $(this).val(); // .... 其他操作。 // 更新 storage.local 中 v 的值。chrome.storage.local.set({"keyforv" : v}, function(){ // 回调 }); });正如@Teepeemm 所说,您应该给每个键/值对更新。
  • 1) 嗯? 2) 只需要v 的最新值。我刚刚用我认为你所说的更新了我的问题。请检查它是否是您的意思。 ------------------------------------------- 好的,仍然,我如何使用它们?换句话说,1)我在哪里插入更改值(即数字12 或字母asdf)以便将其保存到本地存储中?和 2) 我如何将这个 localstorage 值插入到变量 v 现在存在的代码中?
【解决方案2】:

您可能需要多注意api。 chrome.storage.local 的类型为StorageArea。因此,chrome.storage.local.set 的第一个(也是唯一一个强制的)参数是“一个对象,它让每个键/值对更新”。你只给出了该对象的后半部分。尝试: chrome.storage.local.set({"sidemargins":v});

【讨论】:

  • 当您访问getting 时,请确保您首先了解stackoverflow.com/q/23667086/2336725
  • 我实际上并没有设置边距,我有很多不同的 css,我需要一些可以放置任何键的东西,而不仅仅是一个特定的 css。
  • 你可以组成自己的键名,并将具有多个键的对象传递给set。我刚刚编写了sidemargins 键,因为它似乎适合您的示例。
  • BurningFish 的例子就是要走的路。或者我第一次评论的链接。如果您在这些方面遇到问题,我建议您提出一个新问题,显示您到目前为止所拥有的内容(并从此处链接到它)。但是,如果你没有表明你真的试图理解我发布的链接,它会作为那个链接的副本很快被关闭。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2020-01-11
  • 2022-01-06
相关资源
最近更新 更多