7

Comencé a escribir un script de greasemonkey, y tengo problemas para realizar el almacenamiento de locals en el script de Greasemonkey. La única forma en que pude descubrir el almacenamiento local en GM es creando otra instancia de Javascript en la propiedad DOM newElement.innerHTML, pero allí el resto de mis variables son inaccesibles.LocalStorage en Greasemonkey

¿Alguna idea? Aquí está el fragmento de código de Greasemonkey en el que estoy trabajando.

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

Respuesta

7

hmm, unsafeWindow.localStorage no funciona Supongo? Sé que no es un problema para Chrome obtener localStorage, nunca lo intenté en firefox para ser honesto.

+4

acabo de utilizar 'unsafeWindow.localStorage' en un script de Greasemonkey (en Firefox 3.6 en Mac) y que parece funcionar bien. –

+1

Tenga en cuenta que el uso de unssafeWindow permitirá a las páginas web detectar y minipular potencialmente greasemonkey, si es capaz de atrapar los eventos que ocurren cuando se invoca el objeto inseguroWindow. Esta información se puede verificar [aquí] (https://www.safaribooksonline.com/library/view/greasemonkey-hacks/0596101651/ch01s13.html) – CoasterChris

9

Si solo necesita almacenar valores, puede utilizar la forma clásica de Greasemonkey utilizando las funciones GM_getValue() y GM_setValue() que funcionan bastante bien.

+0

@Basilevs por otro lado, grandes cantidades de datos _causarán localStorage para escupir excepciones ;-) –

+0

@JanDvorak mi comentario sobre los montos de datos ya no es relevante - Greasemonkey [usa SQLite para almacenar valores] (http://stackoverflow.com/a/20976405/125562). – Basilevs