2011-01-10 4 views
9

J'essaie d'accéder au localStorage d'une page à partir d'une extension Firefox. Ma compréhension est que content donne une référence à la window de la page en cours. Quand j'essaye d'accéder au localStorage pour la page avec content.localStorage, je pense que j'obtiens une référence à lui. Cependant, quand j'essaye content.localStorage.length, je n'ai rien.localStorage dans une extension Firefox

Ci-joint le code en question.

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: Plus d'informations.

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

La longueur est de lancer l'exception « [Exception ... "Component n'est pas disponible" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"

localStorage.length fonctionne quand je l'ai sur une page Web standard dans Firefox , mais content.localStorage.length dose ne fonctionnera pas de l'extension Firefox. maintenant, je suis confus ...

Répondre

7

d'une extension Firefox, vous pouvez accéder à l'objet localStorage avec window.content.localStorage, par exemple:

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

Tout le reste vous donnera une erreur "Le composant non disponible".

En outre, globalStorage ne fonctionne pas de cette façon. Vous ne pouvez pas l'utiliser du tout avec une extension car l'objet n'est disponible que s'il est exécuté depuis un serveur. En utilisant l'interface NsIDOMStorageManager xpcom, vous pouvez obtenir vos informations de stockage local.

+0

window.content est undefined! – Praveen

0

utilisation content.localStorage.wrappedJSObject.myVariable