28

是否可以在 chrome 扩展的上下文中以浏览器重新启动后可以访问的方式存储数据?

4

6 回答 6

45

甚至比这更简单:

读书:

    var myStoredValue = localStorage["TheKeyToMyStoredValue"];

来写:

    localStorage["TheKeyToMyStoredValue"] = myNewValueToStore;

摆脱:

    delete localStorage["TheKeyToMyStoredValue"];
于 2010-02-10T13:00:02.370 回答
21

是的。完成如何做到这一点的完整演练可能会超出合理的 StackOverflow 答案的长度,因此我将向您推荐 Rajdeep Dua 的这个非常广泛的教程

相关代码如下所示:

// Store item in local storage:
function setItem(key, value) {
  try {
    log("Storing [" + key + ":" + value + "]");
    window.localStorage.removeItem(key);      // <-- Local storage!
    window.localStorage.setItem(key, value);  // <-- Local storage!
  } catch(e) {
    log("Error inside setItem");
    log(e);
  }
  log("Return from setItem" + key + ":" +  value);
}

// Gets item from local storage with specified key.
function getItem(key) {
  var value;
  log('Retrieving key [' + key + ']');
  try {
    value = window.localStorage.getItem(key);  // <-- Local storage!
  }catch(e) {
    log("Error inside getItem() for key:" + key);
  log(e);
  value = "null";
  }
  log("Returning value: " + value);
  return value;
}

// Clears all key/value pairs in local storage.
function clearStrg() {
  log('about to clear local storage');
  window.localStorage.clear(); // <-- Local storage!
  log('cleared');
}

function log(txt) {
  if(logging) {
    console.log(txt);
  }
}
于 2010-01-28T08:06:46.547 回答
7

Chrome 还支持 HTML5 Web 数据库规范。这为您提供了一个本地 SQL 数据库,因此您可以做比简单地将名称/值对存储在本地存储中更复杂的事情。

于 2010-03-29T18:19:51.090 回答
5

当前的 chrome 版本具有本地存储。

我自己用过。您可以使用modernizr 来检测浏览器是否支持它。我已经为客户端编写了一个解决方案,如果不存在本地存储,我会回退到 cookie,但这对于扩展来说应该不是问题。

于 2010-01-28T08:19:39.090 回答
3

现在使用chrome.storage可能会更好 chrome.storage 是异步的,这使得它更快,并且 localStorage 限制为 5MB。

于 2015-01-14T01:00:45.907 回答
2

这里已经有一些很好的答案,但请注意,如果您决定在扩展中使用内容脚本,则该内容脚本将无法访问 localStorage。因此chrome.storage是一个不错的选择。

于 2016-02-29T20:00:22.143 回答