tampermonkey 中文文档 下载 App

GM_setValue 与 GM_getValue:脚本数据的读写与持久化

脚本要「记住事」,用的是 GM 存储函数。这套存储独立于网页本身:页面清缓存不影响它,换浏览器不带走它(除非同步/导出)。以下内容依据官方文档 GM_values 分组整理。

单键读写

// 写
GM_setValue("someKey", "someData");
await GM.setValue("otherKey", "otherData");

// 读(第二个参数是缺省值)
const a = GM_getValue("someKey", null);
const b = await GM.getValue("otherKey", null);

删除与枚举

GM_deleteValue("someKey");          // 删单键
const keys = GM_listValues();       // 列出所有键

批量操作(v5.3+)

GM_setValues({ foo: 1, bar: 2 });   // 一次写多键
const vals = GM_getValues({ foo: 0, bar: 0 }); // 键名+缺省值对象,一次读多键
GM_deleteValues(["foo", "bar"]);    // 一次删多键

异步版本对应 GM.setValues 等,返回 Promise。

变更监听

GM_addValueChangeListener(key, callback) 可以监听某个键的变化,回调参数含旧值、新值与 remote 标记(是否来自其他标签页/实例)——适合多标签页协作的脚本;对应的移除函数是 GM_removeValueChangeListener。

这些数据存到哪、怎么管理

与 localStorage 的区别

维度GM 存储页面 localStorage
归属脚本,跨页面共享单个站点
存活直到删脚本/清数据随站点缓存策略
跨域与脚本同在,配合跨域脚本用受同源策略限制

常见坑