我最近在Greasemonkey上编写了一个脚本,想将其发布为Firefox的插件。有什么简单的方法可以做到这一点吗?
我最近在Greasemonkey上编写了一个脚本,想将其发布为Firefox的插件。有什么简单的方法可以做到这一点吗?
虽然你可以“编译”一个GreaseMonkey脚本(参见Brock的答案),但这种解决方案并不是得到很好支持的。更可靠的选择是使用Add-on SDK 和 JPM 。你的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")
});
这相当于以下的 GreaseMonkey 脚本头:
// @include http://example.com/*
// @include http://*.example.com/*
然后,您将GreaseMonkey脚本添加为data/contentScript.js
(Add-on SDK将忽略GreaseMonkey标头,该信息在其他地方指定),并构建扩展程序。在大多数情况下,它会正常工作-除非您的GreaseMonkey脚本使用任何特殊的GreaseMonkey API,否则您需要找到替代方法。unsafeWindow
得到支持(通常适用警告)。
只需在userscripts.org1 OpenUserJS.org(或其他替代userscripts.org的网站)上发布您的脚本。
试图将其重新打包为附加组件通常会带来更多麻烦,不值得。
var pageMod = require("sdk/page-mod"); var self = require("sdk/self"); pageMod.PageMod({ include: "*", contentScriptWhen: 'ready', contentScriptFile: [self.data.url("contentScript.js")] });
- trlkly@contentScriptWhen: 'end'
还是不对。GreaseMonkey脚本默认从DOMContentLoaded开始执行,所以应该是@contentScriptWhen: 'ready'
。 - trlkly