Локальное хранилище в Greasemonkey

Я начал писать скрипт greasemonkey, и у меня возникли проблемы с локальным хранением в скрипте Greasemonkey. Единственный способ выяснить localstorage в GM - это создать еще один экземпляр Javascript в свойстве newElement.innerHTML DOM, но там остальные мои переменные недоступны.

Любые идеи ? Вот фрагмент кода Greasemonkey, над которым я работаю.

        var testHref = anchorTag[i].href;
    var testHTML = anchorTag[i].innerHTML;
    var patHref = /item\?id=[0-9]*/g;
    var patCaptureId = /item\?id=([0-9]*)/g;
    var testId = patCaptureId.exec(testHref);
    var patHTML = /[0-9]* comment(|s)/g;
    var patHTML2 = /discuss/g;
    if(patHref.test(testHref) && !patHTML.test(testHTML) && !patHTML2.test(testHTML))
    {
        newElement = document.createElement('span');
        newElement.style.color = "#FF0000";
        newElement.innerHTML = "<a href=\"javascript:localStorage.setItem( 'one', 'rishabhVerma' ); var test = localStorage.getItem( 'one' ); console.log( test );\"> B</a>";
        anchorTag[i].parentNode.insertBefore(newElement, anchorTag[i].nextSibling); 
    }
    i++;

person 0xff0000    schedule 31.10.2010    source источник


Ответы (2)


Если вам просто нужно сохранить значения, вы можете пойти классическим способом Greasemonkey, используя функции GM_getValue() и GM_setValue(), которые работают очень хорошо.

person Xavi Esteve    schedule 28.06.2011
comment
@Basilevs, с другой стороны, очень большие объемы данных заставят localStorage выдавать вам исключения ;-) - person John Dvorak; 29.05.2014
comment
@JanDvorak, мой комментарий об объемах данных больше не актуален - Greasemonkey использует SQLite для хранения значений. - person Basilevs; 29.05.2014

хм, я думаю, unsafeWindow.localStorage не работает? Я знаю, что для хрома не проблема получить localStorage, честно говоря, никогда не пробовал его в firefox.

person Johan    schedule 31.10.2010
comment
Я просто использовал unsafeWindow.localStorage в скрипте Greasemonkey (в Firefox 3.6 на Mac), и, похоже, он работает нормально. - person Henrik N; 28.03.2011
comment
Обратите внимание, что использование unsafeWindow позволит веб-страницам обнаруживать и потенциально минимизировать greasemonkey, если он способен перехватывать события, происходящие при вызове объекта unsafeWindow. Эту информацию можно проверить здесь - person CoasterChris; 04.04.2015