Skip to content

GM API 参考

PageMod 实现了标准 Greasemonkey API(GM_*)。用户脚本通过在 @grant 中声明需要的 API 来获取对应权限。详见 Tampermonkey 官方文档

需要 @grant 声明的 API

API功能
GM_setValue(key, value)存储键值对数据(浏览器本地,按脚本隔离)
GM_getValue(key, default?)读取存储的数据
GM_deleteValue(key)删除存储的数据
GM_listValues()列出脚本存储的所有键名
GM_xmlhttpRequest(details)发起跨域 HTTP 请求(不受浏览器同源策略限制)
GM_cookie(action, details)读取/设置/删除 Cookie(action: 'list'/'set'/'remove')
GM_setClipboard(text, type?)将文本写入系统剪贴板
GM_notification(text, title?, image?, onclick?)显示桌面通知
GM_openInTab(url, options?)在新标签页中打开 URL
GM_download(url, name?)下载文件到本地
GM_registerMenuCommand(name, fn, accessKey?)注册右键菜单项
GM_addValueChangeListener(key, callback)监听存储值的变化(跨标签页同步)

无需 @grant 的 API

API功能
GM_info获取脚本元数据(名称、版本、命名空间等)
GM_addStyle(css)向页面注入 CSS 样式
GM_addElement(parent, tag, attributes?)创建 DOM 元素(支持 script/link/style 等任意标签)
GM_log(...messages)向控制台输出日志
unsafeWindow访问页面原始的 window 对象

通信机制

GM API 调用通过 performance CustomEvent 在 MAIN world(用户脚本)和 ISOLATED world(Content Script)之间传递,再由 Content Script 通过 chrome.runtime.sendMessage 转发到 Service Worker 后台执行。这种架构保证了用户脚本与扩展代码之间的安全隔离。