2016-08-25 75 views
0

我正在用tampermonkey编写脚本。保留在脚本中设置的变量

我有一个var arr = ["alex", "felix"]它可以根据脚本的使用情况进行更新。当有变化时,我将值添加到arr中; arr.push("kelix")

但是当脚本重新加载时,arr仍然是var arr = ["alex", "felix"]。 newValue不会推送到数组。那么如何保留变量arr中的更改呢?

我该怎么办?

+1

使用localStorage的/ sessionStorage的存储变量refresh.'sessionStorage.setItem后重新使用( '改编',编曲):'和'使用sessionStorage.getItem( '改编')进行检索;'。有关sessionStorage的更多信息,请访问:https://developer.mozilla.org/en/docs/Web/API/Window/sessionStorage –

+0

您可以直接使用'localStorage.arr' – maioman

回答

1

我会用localStorage。下面看到的示例脚本,将允许您更改文档标题,并记住它在重装:在控制台

// ==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; 

用法:

changeDocumentTitleForever("test") 
0

如果你正在写userscript,GM_setValueGM_getValue可能是一个更好选择比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));