Atualização 2016:
O Google Chrome lançou a API de armazenamento: http://developer.chrome.com/extensions/storage.html
É muito fácil de usar, como as outras APIs do Chrome, e você pode usá-lo em qualquer contexto de página no Chrome.
// Save it using the Chrome extension storage API.
chrome.storage.sync.set({'foo': 'hello', 'bar': 'hi'}, function() {
console.log('Settings saved');
});
// Read it using the storage API
chrome.storage.sync.get(['foo', 'bar'], function(items) {
message('Settings retrieved', items);
});
Para usá-lo, defina-o no manifesto:
"permissions": [
"storage"
],
Existem métodos para "remover", "limpar", "getBytesInUse" e um ouvinte de eventos para escutar o armazenamento alterado "onChanged"
Usando localStorage nativo ( resposta antiga de 2011 )
Os scripts de conteúdo são executados no contexto de páginas da Web, não em páginas de extensão. Portanto, se você estiver acessando o localStorage a partir do seu conteúdo, ele será o armazenamento dessa página da Web, não o armazenamento da página de extensão.
Agora, para permitir que seu script de conteúdo leia seu armazenamento de extensões (onde você os define na página de opções), é necessário usar a passagem de mensagens de extensão .
A primeira coisa que você faz é dizer ao script de conteúdo para enviar uma solicitação à sua extensão para buscar alguns dados, e esses dados podem ser sua extensão localStorage:
contentscript.js
chrome.runtime.sendMessage({method: "getStatus"}, function(response) {
console.log(response.status);
});
background.js
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request.method == "getStatus")
sendResponse({status: localStorage['status']});
else
sendResponse({}); // snub them.
});
Você pode fazer uma API em torno disso para obter dados genéricos do localStorage no script de conteúdo ou, talvez, obter toda a matriz localStorage.
Espero que tenha ajudado a resolver seu problema.
Para ser chique e genérico ...
contentscript.js
chrome.runtime.sendMessage({method: "getLocalStorage", key: "status"}, function(response) {
console.log(response.data);
});
background.js
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request.method == "getLocalStorage")
sendResponse({data: localStorage[request.key]});
else
sendResponse({}); // snub them.
});