轻量 GM 函数速览:通知、菜单命令、剪贴板与新标签页
除了存储、跨域请求、下载三件重头戏,日常脚本最常用的是四组轻量函数。以下均依据官方 Documentation 对应条目整理。
GM_notification:桌面通知
GM_notification({
text: "任务处理完成",
title: "我的脚本",
silent: true, // 不响铃
timeout: 5000, // 自动关闭毫秒数
onclick: () => console.log("被点了")
});
要点:
- 依赖扩展的 notifications 权限(见权限清单解读);
highlight可以改为高亮标签页而不弹通知;- 新版本支持
tag复用更新同一条通知、url指定点击跳转地址; - 既没
url也没tag时,通知随页面卸载自动消失。
GM_registerMenuCommand:注册菜单命令
const id = GM_registerMenuCommand("打开设置面板", () => {
alert("菜单被点击了");
}, { accessKey: "s", autoClose: true });
GM_unregisterMenuCommand(id); // 注销
要点:
- 注册后,命令出现在 Tampermonkey 弹出菜单的脚本菜单区,也可以出现在页面右键菜单;
accessKey提供键盘快捷字母(弹出菜单打开时按该字母触发);- 相同名称的多框架注册会被合并为一条菜单项;
- 这是脚本提供「设置」「开关功能」交互的主流方式——脚本里看到它,多半弹菜单里会多出几个条目。
GM_setClipboard:写剪贴板
GM_setClipboard("复制的文本", "text", () => console.log("已复制"));
- 第二参数可以是类型字符串(
text/html)或带 mimetype 的对象; - 配合「一键复制」类脚本使用;
- 对应的读取不在此列——出于安全,脚本只能写不能读剪贴板。
GM_openInTab:开新标签页
const tab = GM_openInTab("https://www.example.com/", { active: false, setParent: true });
// tab.close() 关闭;tab.onclose 监听;tab.closed 查询状态
active: false后台打开(旧式第二个布尔参数loadInBackground同义,为兼容 Greasemonkey 3.x 保留);incognito: true在无痕窗口打开;insert可指定新标签的插入位置。