我正在尝试从Firefox扩展程序访问页面的localStorage。我的理解是content
提供了对当前页面的window
的引用。当我尝试访问带有content.localStorage
的页面的localStorage时,我想我正在获取它的引用。但是,当我尝试content.localStorage.length
时,我什么都没得到。
附件是有问题的代码。
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);
编辑#1:更多信息。
try{
alert(content.localStorage.getItem('todoData'))
alert(content.localStorage.length)
} catch (e){
alert(e)
}
长度抛出异常“[Exception ...”组件不可用“nsresult:”0x80040111(NS_ERROR_NOT_AVAILABLE)“
localStorage.length
在Firefox中的标准网页上显示时有效,但content.localStorage.length
无法使用Firefox扩展程序。现在我很困惑......
答案 0 :(得分:7)
在Firefox扩展程序中,您可以使用 window.content.localStorage 访问localStorage对象,例如:
var ls = window.content.localStorage;
ls.setItem("myvariable", "myvalue");
var item = ls.getItem("myvariable");
其他任何东西都会给你一个"组件不可用"错误。
顺便说一下,globalStorage并不是这样做的。您无法使用扩展名来使用它,因为该对象仅在从服务器运行时才可用。
答案 1 :(得分:2)
使用NsIDOMStorageManager xpcom界面,您可以获取本地存储信息。
https://developer.mozilla.org/en/XPCOM_Interface_Reference/NsIDOMStorageManager
答案 2 :(得分:0)
使用content.localStorage.wrappedJSObject.myVariable