如何将Greasemonkey脚本发布为Firefox附加组件?

CSa*_*sky 6 javascript greasemonkey firefox-addon

我最近在Greasemonkey上编写了一个脚本,并希望将其作为Firefox的附加组件发布.最简单的方法是什么?

Wla*_*ant 10

虽然您可以"编译"GreaseMonkey脚本(请参阅Brock的答案),但此解决方案并未得到完全支持.更可靠的选择是使用Add-on SDKJPM.您的lib/main.js文件非常简单(page-mod模块文档):

var data = require("sdk/self").data;
var pageMod = require("sdk/page-mod");
pageMod.PageMod({
  include: "*.example.com",
  contentScriptWhen: 'end',
  contentScriptFile: data.url("contentScript.js")
});
Run Code Online (Sandbox Code Playgroud)

这相当于以下GreaseMonkey脚本标题:

// @include http://example.com/*
// @include http://*.example.com/*
Run Code Online (Sandbox Code Playgroud)

然后添加GreaseMonkey脚本data/contentScript.js(Add-on SDK将忽略GreaseMonkey标头,信息在别处指定)并构建扩展.在大多数情况下,它只会起作用 - 除非您的GreaseMonkey脚本当然使用任何特殊的GreaseMonkey API,在这种情况下您需要找到替代品.unsafeWindow方式支持(通常适用警告).

  • @trlkly:对,SDK模块分辨率改变了一段时间 - 我修复了.其他更改是不必要的,它们可能有意义取决于您正在做什么但不一定. (2认同)

Bro*_*ams 5

只需将您的脚本发布到userscripts.org 1 OpenUserJS.org(或其他 userscripts.org 替代品之一)。
尝试将其重新打包为附加组件通常会带来更多麻烦,而不是值得的。


如果确实需要,您可以使用Greasemonkey 脚本编译器将脚本转换为“附加组件”,然后通过正常的附加组件流程将该附加组件提交到 Mozilla

请注意,Wladimir 的答案比 Greasemonkey 脚本编译器更好。



1 Userscripts.org 现已消亡已久