Tampermonkey GM 函数全景:脚本可用的扩展 API 地图
网页里的普通脚本被浏览器安全模型管得很严:不能跨域请求、不能写剪贴板、不能发系统通知。GM 函数是 Tampermonkey 提供给用户脚本的受控扩展接口——每用一样能力,就在 @grant 里声明一样。
两套写法:同步与异步
官方文档同时收录两套命名:
- 下划线版:
GM_setValue、GM_getValue——传统同步风格; - 点号版:
GM.setValue、GM.getValue——返回 Promise 的异步风格。
两套功能对应,混用没问题,声明 @grant 时写清楚用的是哪个。
按用途分类的地图
| 用途 | 函数 | 详解页 |
|---|---|---|
| 存数据 | GM_setValue / GM_getValue / GM_deleteValue / GM_listValues 及批量版 GM_*Values | 数据读写函数 |
| 跨域请求 | GM_xmlhttpRequest、GM_webRequest | 跨域请求函数 |
| 下载文件 | GM_download | 下载函数 |
| 通知 | GM_notification | 轻量 GM 函数 |
| 菜单命令 | GM_registerMenuCommand / GM_unregisterMenuCommand | 轻量 GM 函数 |
| 剪贴板 | GM_setClipboard | 轻量 GM 函数 |
| 新标签页 | GM_openInTab | 轻量 GM 函数 |
| 资源读取 | GM_getResourceText / GM_getResourceURL | 配合头部 @resource 使用 |
| 信息 | GM_info | 唯一不需要 grant 声明的属性 |
| 标签页数据 | GM_getTab / GM_saveTab / GM_getTabs | 按标签页存取临时状态 |
| 高级能力 | GM_addElement / GM_addStyle、GM_cookie.*、GM_audio.*、window.onurlchange | 见官方文档对应条目 |
使用规则速记
- 先声明后使用:头部
@grant列出函数名,没声明的调用直接失败; none关大门:@grant none时全部 GM 函数不可用(GM_info除外);- 跨域要过两道门:
@grant GM_xmlhttpRequest只解决「能不能调用」,请求哪个域名还要@connect声明加用户确认,见跨域确认弹窗。
GM_info:了解运行环境
GM_info 返回脚本与运行环境的信息对象:脚本版本、匹配规则、沙箱模式、下载模式等。排查「脚本到底以什么配置在跑」时先打印它。
与权限体系的关系
GM 函数是扩展层面的授权。MV3 版本的 Tampermonkey 在这之上还有浏览器层面的「允许用户脚本」开关——脚本一个 GM 函数都没用也可能被那个开关拦住,见允许用户脚本开关。
各函数的参数细节以官方 Documentation 页为准,功能可能随版本变化。