Javascript 如何将Greasemonkey脚本发布为Firefox插件?

Javascript 如何将Greasemonkey脚本发布为Firefox插件?,javascript,firefox-addon,greasemonkey,Javascript,Firefox Addon,Greasemonkey,我最近在Greasemonkey中编写了一个脚本,并希望将其作为Firefox的附加组件发布。最简单的方法是什么?只需将您的脚本发布到1(或其他userscripts.org替代版本之一)。 尝试将其作为附加组件重新打包通常比它的价值更麻烦 如果确实需要,可以使用将脚本转换为“附加组件”,然后 请注意,Wladimir的答案比Greasemonkey脚本编译器更好。 1.虽然您可以“编译”GreaseMonkey脚本(参见Brock的答案),但该解决方案并没有得到很好的支持。更可靠的选择是

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

只需将您的脚本发布到1(或其他userscripts.org替代版本之一)。
尝试将其作为附加组件重新打包通常比它的价值更麻烦


如果确实需要,可以使用将脚本转换为“附加组件”,然后

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



1.

虽然您可以“编译”GreaseMonkey脚本(参见Brock的答案),但该解决方案并没有得到很好的支持。更可靠的选择是使用and。您的
lib/main.js
文件可以非常简单():

var data=require(“sdk/self”).数据;
var pageMod=require(“sdk/page mod”);
pageMod.pageMod({
包括:“*.example.com”,
contentScriptWhen:'结束',
contentScriptFile:data.url(“contentScript.js”)
});
这相当于以下GreaseMonkey脚本头:

/@includehttp://example.com/*
//@include http://*.example.com/*

然后将GreaseMonkey脚本添加为
data/contentScript.js
(add-on SDK将忽略GreaseMonkey头,信息在别处指定)并构建扩展。在大多数情况下,它只会工作——当然,除非您的GreaseMonkey脚本使用任何特殊的GreaseMonkey API,在这种情况下,您将需要找到一个替代品。顺便问一下(通常会有警告)。

你说的“没有得到很好的支持”是什么意思?在“不安装/很少安装”或“臃肿的代码”的意义上?@RobW:我的意思是:“有人在几年前入侵了这个古老的解决方案,但从那以后就没有真正更新过”。这在很多方面都是次优的,比如需要重新启动浏览器才能安装扩展,但没有人会解决这个问题。我试图编辑这个,但他们没有接受。但是这个脚本已经不起作用了。我不得不根据Mozilla文档修改它<代码>var pageMod=require(“sdk/page mod”);var self=要求(“sdk/self”);pageMod.pageMod({include:“*”,contentScriptWhen:'ready',contentScriptFile:[self.data.url(“contentScript.js”)]})@trlkly:对,SDK模块分辨率在不久前更改了-我修复了这个问题。其他更改是不必要的,它们可能有意义,这取决于您正在做什么,但不一定。谢谢您的修复。但是
@contentScriptWhen:'end'
仍然是错误的。GreaseMonkey脚本默认从DOMContentLoaded开始,因此它应该是
@contentScriptWhen:'ready'