有没有办法直接从浏览器(Firefox)启动用户脚本?

Is there a way to launch userscripts directly from browser (Firefox)?

我想运行一些用户脚本来备份数据。

我不希望这些脚本被加载到每个网页上,因为它们不会改变它们,而且根据页面的不同,我只想 运行 无论如何。


那么有没有办法直接从浏览器 (Firefox) 启动这些脚本?来自书签之类的?基本上我想单击一个按钮并让脚本 运行 就像我从 js 控制台 运行 宁它一样。


目前我发现的最好的是 Tampermonkey 的“@运行-at context-menu”指令。我的脚本出现在 TamperMonkey 上下文菜单中,单击时 运行。

然而这个菜单在每个页面上加载(@运行-at context-menu 忽略 @include 指令并在所有地方应用),我不确定性能后果,它可能是如果我最终有很多脚本会很不方便。


我想我也可以将我的脚本修改为特定页面上的 运行,以便它们添加浮动按钮或其他内容。但我宁愿不修改页面,在我想有几个可能的脚本的页面上会很不方便。


我记得很久以前使用 Greasemonkey 脚本在上下文菜单上添加选项。 Tampermonkey 是否有可能实现与 @运行-at context-menu 相同的功能,它只适用于某些页面?


最好采用更原生的方式,但我愿意接受各种选择。

Basically I want to click a button and have the script run like if I was running it from the js console.

从上面来看,我假设用户脚本不使用任何 GM API 或使用 @require,因为这些在 JS 控制台中不可用。

如果是这种情况,FireMonkey 具有从工具栏弹出窗口中插入脚本(或 CSS)的功能。

保存脚本并禁用它(因此它不会自动 运行)或在脚本必须 运行 的站点上启用后,用户可以 select工具栏图标弹出并单击按钮以在活动选项卡中注入脚本。

对于临时脚本,FireMonkey 还有一个 Scratchpad,您可以通过单击该按钮将 JS(或 CSS)粘贴到任何网页上并 运行。 FireMonkey 会记住最后粘贴的数据,以便重复使用。

注:除TM修改网站CSP外,其他管理员受网页CSP约束。

原来有一个函数:https://wiki.greasespot.net/GM.registerMenuCommand

您的脚本只需声明一个函数,调用 GM.registerMenuCommand("label", your_function),然后在 GM/TM 菜单中单击即可使用。

与其他答案相反,这意味着您可以使用@require。

与@运行-at 上下文菜单相反,这意味着您可以使用@match 仅将其应用于目标网站

备注: GM_registerMenuCommand 在 TamperMonkey 中 需要@grant才能使用函数