2011-01-10 5 views
9

Ich versuche, von einer Firefox-Erweiterung auf die localStorage einer Seite zuzugreifen. Mein Verständnis ist, dass content einen Verweis auf die window der aktuellen Seite gibt. Wenn ich versuche, auf die localStorage für die Seite mit zuzugreifen, denke ich, dass ich einen Hinweis darauf bekomme. Wenn ich jedoch content.localStorage.length versuche, bekomme ich nichts.localStorage in einer Firefox-Erweiterung

Beigefügt ist der betreffende Code.

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: Weitere Informationen.

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

Die Länge wirft die Ausnahme „[Exception ... "ist Component nicht verfügbar" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"

localStorage.length funktioniert, wenn ich es auf einem Standard-Web-Seite in Firefox , aber content.localStorage.length Dosis nicht von der Firefox-Erweiterung arbeiten. Jetzt bin ich verwirrt ...

Antwort

7

von einer Firefox-Erweiterung, können Sie das Objekt local zugreifen können mit window.content.localStorage, zum Beispiel:

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

Alles andere wird Ihnen eine "Komponente nicht verfügbar" Fehler.

Nebenbei funktioniert globalStorage nicht auf diese Weise. Sie können es überhaupt nicht mit einer Erweiterung verwenden, da das Objekt nur verfügbar ist, wenn es von einem Server ausgeführt wird.

+0

window.content ist nicht definiert! – Praveen

0

Verwendung content.localStorage.wrappedJSObject.myVariable