7

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

Любые идеи? Вот фрагмент кода 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++; 

ответ

7

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

+4

Я просто использовал 'unsafeWindow.localStorage' в Greasemonkey скрипт (в Firefox 3.6 на Mac), и что, кажется, работает хорошо. –

+1

Обратите внимание, что использование unsafeWindow позволит веб-страницам обнаруживать и потенциально мини-смазывать greasemonkey, если он способен улавливать события, возникающие при вызове объекта unsafeWindow. Эта информация может быть проверена [здесь] (https://www.safaribooksonline.com/library/view/greasemonkey-hacks/0596101651/ch01s13.html) – CoasterChris

9

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

+0

@Basilevs, с другой стороны, очень большие объемы данных _will_ cause localStorage, чтобы выплевывать исключения у вас ;-) –

+0

@JanDvorak мой комментарий о количестве данных больше не уместен - Greasemonkey [использует SQLite для хранения значений] (http://stackoverflow.com/a/20976405/125562). – Basilevs

Смежные вопросы