2011-01-10 12 views
9

Estoy intentando acceder al almacenamiento local de una página desde una extensión de Firefox. Según entiendo, content da una referencia al window de la página actual. Cuando intento acceder al localStorage para la página con content.localStorage, creo que estoy obteniendo una referencia. Sin embargo, cuando intento content.localStorage.length, no obtengo nada.localStorage en una extensión de Firefox

Se adjunta el código en cuestión.

var myExtension = { 
    init: function() { 
     var appcontent = document.getElementById("appcontent"); // browser 
     if(appcontent) 
      appcontent.addEventListener("DOMContentLoaded", myExtension.onPageLoad, true); 
    }, 

    onPageLoad: function(aEvent) { 
     var doc = aEvent.originalTarget; 
     alert(content.localStorage) // alerts "[object XPCNativeWrapper [object Storage]]" 
     alert(content.localStorage.length) // alerts nothing 
    } 
window.addEventListener("load", function() { myExtension.init(); }, false); 

EDIT # 1: Más información.

try{ 
    alert(content.localStorage.getItem('todoData')) 
    alert(content.localStorage.length) 
} catch (e){ 
    alert(e) 
} 

La longitud es tirar la excepción "[Excepción ... "componente no está disponible" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"

localStorage.length obras cuando lo tengo en una página web estándar en Firefox , pero content.localStorage.length dosis no funciona desde la extensión de Firefox. Ahora estoy confundido ...

Respuesta

7

de una extensión de Firefox, se puede acceder al objeto localStorage con window.content.localStorage, por ejemplo:

var ls = window.content.localStorage; 
ls.setItem("myvariable", "myvalue"); 
var item = ls.getItem("myvariable"); 

Cualquier otra cosa le dará un error "Componente no disponible".

Como un aparte, globalStorage no funciona de esta manera. No puede usarlo en absoluto con una extensión porque el objeto solo está disponible si se ejecuta desde un servidor.

+0

window.content is undefined! – Praveen

0

uso content.localStorage.wrappedJSObject.myVariable

Cuestiones relacionadas