2016-08-25 1 views
0

J'écris un script dans tampermonkey.Conserver les variables définies dans le script utilisateur

J'ai un var arr = ["alex", "felix"] qui peut être mis à jour en fonction de l'utilisation du script. Quand il y a un changement j'ai ajouté la valeur à l'arr comme; Mais lorsque le script est rechargé, l'arr est toujours var arr = ["alex", "felix"]arr.push("kelix")

La nouvelle valeur n'est pas transmise au tableau. Alors, comment puis-je conserver les changements dans la variable arr?

Que dois-je faire?

+1

Utilisez localStorage/sessionStorage pour stocker des variables à réutiliser après refresh.'sessionStorage.setItem ('arr', arr): 'et récupérer en utilisant' sessionStorage.getItem ('arr); '. Plus d'informations sur sessionStorage ici: https://developer.mozilla.org/en/docs/Web/API/Window/sessionStorage –

+0

vous pouvez utiliser 'localStorage.arr' directement – maioman

Répondre

1

Je voudrais utiliser localStorage. Ci-dessous, voir l'exemple de script qui vous permettra de changer le titre du document et se souviendra plus rechargeant:

// ==UserScript== 
// @name  Remember value 
// @namespace util 
// @description Test that remembers any saved value after reload 
// @include  http://stackoverflow.com/* 
// @version  1 
// @grant  none 
// ==/UserScript== 
// Try to load saved data from local storage 
const FIELD_NAME = "userscript_TEST"; 
var saved = localStorage[FIELD_NAME]?JSON.parse(localStorage[FIELD_NAME]):{}; 

// Save data when leaving tab 
window.addEventListener("unload", function() { 
    localStorage[FIELD_NAME] = JSON.stringify(saved); 
}); 
// This changed document title and remembers it 
window.changeDocumentTitleForever = function(title) { 
    saved["title"] = title; 
    document.title = title; 
} 

// This loads title after loading page 
if(saved.title) 
    document.title = saved.title; 

Utilisation dans la console:

changeDocumentTitleForever("test") 
0

Si vous écrivez userscript, GM_setValue, GM_getValue peut être un meilleur choix que localStorage.

var arr = ["alex", "felix"]; 
try { arr = JSON.parse(GM_getValue('arr', '["alex", "felix"]')); } 
catch (_ignore) { /* ignore when JSON.parse fail */ } 
// do something with arr 
arr.push('kelix'); 
GM_setValue('arr', JSON.stringify(arr));