localStorage в расширении Firefox - PullRequest
       19

localStorage в расширении Firefox

9 голосов
/ 10 января 2011

Я пытаюсь получить доступ к localStorage страницы из расширения Firefox.Насколько я понимаю, content дает ссылку на window текущей страницы.Когда я пытаюсь получить доступ к localStorage для страницы с content.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)
}

Длина вызывает исключение "[Исключение ..." Компонент недоступен "nsresult:" 0x80040111 (NS_ERROR_NOT_AVAILABLE)«

localStorage.length работает, когда он у меня есть на стандартной веб-странице в Firefox, но content.localStorage.length не работает с расширением Firefox. Теперь я в замешательстве ...

Ответы [ 3 ]

7 голосов
/ 18 декабря 2011

Из расширения Firefox вы можете получить доступ к объекту localStorage с помощью window.content.localStorage , например:

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

Все остальное даст вам «Компонент недоступен»ошибка.

Кроме того, globalStorage не работает таким образом.Вы вообще не можете использовать его с расширением, потому что объект доступен, только если он запускается с сервера.

2 голосов
/ 24 февраля 2012

Используя интерфейс NsIDOMStorageManager xpcom, вы можете получить информацию о локальном хранилище.

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

0 голосов
/ 21 июня 2011

использовать content.localStorage.wrappedJSObject.myVariable

...