繁体   English   中英

Firefox扩展中的localStorage

[英]localStorage in a Firefox extension

我试图从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扩展中使用。 现在我很困惑......

在Firefox扩展中,您可以使用window.content.localStorage访问localStorage对象,例如:

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

其他任何东西都会给你一个“组件不可用”的错误。

顺便说一句,globalStorage不会这样工作。 您根本无法使用扩展名,因为该对象仅在从服务器运行时才可用。

使用NsIDOMStorageManager xpcom接口,您可以获取本地存储信息。

https://developer.mozilla.org/en/XPCOM_Interface_Reference/NsIDOMStorageManager

使用content.localStorage.wrappedJSObject.myVariable

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM