2010-01-28 115 views

回答

43

甚至比这更简单:

阅读:

var myStoredValue = localStorage["TheKeyToMyStoredValue"]; 

写:

localStorage["TheKeyToMyStoredValue"] = myNewValueToStore; 

摆脱:

delete localStorage["TheKeyToMyStoredValue"]; 
+2

你的先生是一个99级的德鲁伊和圣人。 – EbilGenius 2013-01-25 15:11:31

+0

这是我在很长时间内阅读的最好答案。 – whizzzkid 2014-11-02 17:50:33

+0

很好的答案。请注意,这不适用于内容脚本。我很困惑,直到我发现[this](http://stackoverflow.com/a/15466494/4926817) – 2016-02-29 20:02:18

21

是的。详细了解如何做到这一点可能会超出合理的StackOverflow答案的长度,因此我会通过Rajdeep Dua向您推荐this very extensive tutorial

相关的代码是这样的:

// 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); 
    } 
    } 
+1

该教程的链接已损坏,但该示例仍存在。以下是教程示例https://chrome.google.com/webstore/detail/hmbpgbeiphknbkjjfppodijapijlpkkc – 2011-12-24 10:59:28

+0

此API也有很好的工作: https://developer.chrome.com/extensions/storage.html 它也允许你将数据同步到你的个人资料 – 2013-01-24 03:52:46

5

目前的Chrome版本具有本地存储。

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

+0

链接的死亡截至11/11/11 – techie007 2011-11-11 21:14:33

+1

我删除了它并更新了答案 – 2011-11-14 14:12:45

7

Chrome浏览器也支持HTML5 Web Database规格。这给你一个本地的SQL数据库,所以你可以做更复杂的事情,而不是简单地在本地存储中存储名称/值对。

3

今天使用chrome.storage可能会更好。 chrome.storage是异步的,这使得它更快,localStorage被限制为5MB。

+0

“这使得它更快”__ [引用需要] _ – Xan 2016-02-29 20:21:03

+0

正如指定[这里](https://由chrome开发人员开发的大容量非阻塞式读写操作比阻塞和串行localStorage API更快。 – krbnr 2016-03-07 22:26:02

+0

感谢您的链接! – Xan 2016-03-07 22:30:42

1

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

相关问题