2010-06-13 46 views
14

Estoy desarrollando una extensión para Google Chrome y me he encontrado con algunos problemas. Creé una página options.html y la agregué al archivo manifest.json. La página se muestra correctamente.Google chrome extension: local storage

Guardé las opciones, y luego volví a la página en la que se supone que se debe ejecutar la extensión.

Desafortunadamente, el almacenamiento local para las opciones devolvía un 'nulo' en lugar de la opción. Si configuro la opción de almacenamiento local directamente desde la secuencia de comandos JS de la extensión, funciona bien, pero no si se configuró desde la página de opciones.

¿Alguna idea de cómo puedo acceder a los valores de almacenamiento local de options.html de mi archivo Javascript en la extensión?

+1

Entonces, ¿cómo solucionarlo? Estoy teniendo el mismo problema. 'options.html' usa localStorage, pero el script de contenido solo conoce el localStorage del sitio web y localStorage' background.js' está vacío ... – Rudie

+1

Lo he arreglado usando el nuevo API de almacenamiento: https://developer.chrome .com/extensions/storage.html – Rudie

+0

En este punto, debe usar ['chrome.storage'] (https://developer.chrome.com/extensions/storage), no [' localStorage'] (https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) en las extensiones de Chrome, a menos que sea específicamente su intención de interactuar con 'localStorage' para un sitio web específico mediante un script de contenido. – Makyen

Respuesta

24

tienen los configura utilizando:

localStorage["var"]=data; 

o

localStorage.var=data; 

y se le cargarlas utilizando

var myvar = localStorage.var; 

Se puede ver la API here

+1

Sí. Resolví el problema, es específico de Chrome. – Rohan

+0

realmente? siempre funciona para mí, ¿tal vez fue solo temporal? pero al menos funciona ahora. – leegeorg07

+0

Hola Rohan, estoy enfrentando el mismo problema ¿puedes publicar la solución? –

14

El co rrecta método es:

if (typeof(localStorage) == ‘undefined’) { 
    alert(‘Your browser does not support HTML5 localStorage. Try upgrading.’); 
} 
else { 
    try { 
    localStorage.setItem(“name”, “Hello World!”); //saves to the database, “key”, “value” 
    } 
    catch (e) { 
    if (e == QUOTA_EXCEEDED_ERR) { 
     alert(‘Quota exceeded!’); //data wasn’t successfully saved due to quota exceed so throw an error 
    } 
    } 
    document.write(localStorage.getItem(“name”)); //Hello World! 
    localStorage.removeItem(“name”); //deletes the matching item from the database 
} 

REFERENCIA: http://html5tutorial.net/tutorials/working-with-html5-localstorage.html

+13

Sí, esta es la forma robusta de acceder a localStorage para javascripts, pero cualquier versión de Chrome compatible con extensiones admitirá localStorage, por lo que es redundante. – Jason

Cuestiones relacionadas