保留在userscript中设置的变量
Preserve variables set within userscript
我正在用tampermonkey写一个脚本。
我有一个var arr = ["alex", "felix"]
,可以根据脚本的使用情况更新。当有变化时,我将值添加到arr as;arr.push("kelix")
但是当脚本重新加载时,arr仍然是var arr = ["alex", "felix"]
。newValue不会被压入数组。那么,如何保存变量arr
中的更改呢?
我该怎么办?
我会用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")
如果您正在编写userscript, GM_setValue
、GM_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));
相关文章:
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- Javascript使用变量设置属性
- 敲除js变量设置类似于调用函数
- 使用输入变量设置元素的值
- 为什么我们将控制器变量设置为等于“0”;这个“;在角度上
- 将外部控制器的范围变量设置为角度
- 谷歌地图标记在通过变量设置标记和经度时不保持不变
- 尝试在 jquery ajax 帖子中将变量设置为URL 的一部分
- 如果循环中至少有一个元素返回 false,如何将变量设置为 false
- 如何将宽度和高度变量设置为浏览器窗口的宽度和高度
- 如何将变量设置为外部内容
- 需要将变量设置为特定的数字范围
- 执行批处理文件的Javascript,该文件包含基于每个会话的环境变量设置
- 如何在jquery中基于变量设置某个东西的宽度
- 将变量设置为等于本地JSON文件
- 根据Angular中的单独变量设置下拉默认值
- 如何使用JavaScript变量设置函数集css宽度
- 如何为一个javascript变量设置give多个值
- 如何将javascript变量设置为php变量并将其存储在数据库中
- 如何在javascript中为变量设置一行setter