7

Ho iniziato a scrivere uno script greasemonkey e sto riscontrando problemi con l'esecuzione di localstorage nello script Greasemonkey. L'unico modo in cui sono riuscito a trovare lo spazio locale in GM consiste nel creare un'altra istanza di Javascript nella proprietà DOM , ma il resto delle mie variabili non è accessibile.LocalStorage in Greasemonkey

Qualche idea? Ecco il frammento di codice di Greasemonkey su cui sto lavorando.

 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++; 

risposta

7

hmm, unsafeWindow.localStorage non funziona Immagino? So che non è un problema per Chrome ottenere il localStorage, mai provato su firefox per essere onesti.

+4

ho solo usato 'unsafeWindow.localStorage' in uno script Greasemonkey (in Firefox 3.6 su Mac) e che sembra funzionare bene. –

+1

Si noti che l'uso di unsafeWindow consentirà alle pagine Web di rilevare e potenzialmente minipolare greasemonkey, se è in grado di intercettare gli eventi che si verificano quando viene chiamato l'oggetto unsafeWindow. Queste informazioni possono essere verificate [qui] (https://www.safaribooksonline.com/library/view/greasemonkey-hacks/0596101651/ch01s13.html) – CoasterChris

9

Se è sufficiente memorizzare i valori, è possibile utilizzare il classico metodo Greasemonkey utilizzando le funzioni GM_getValue() e GM_setValue() che funzionano piuttosto bene.

+0

@Basilevs d'altra parte, quantità molto grandi di dati _will_ causa localStorage per sputare le eccezioni a te ;-) –

+0

@JanDvorak il mio commento sugli importi dei dati non è più rilevante - Greasemonkey [usa SQLite per memorizzare valori] (http://stackoverflow.com/a/2097640/12/125562). – Basilevs