Userscript 转向 Firefox 插件在浏览器中不是 运行

Userscript turned Firefox-addon is not running in browser

我是插件开发新手。 Here 是我试图转换成 firefox 插件的简单用户脚本。这只是我要使用的一个简单的私人插件,不适用于 AMO 或其他东西。我首先将其转换为插件的原因是 Android 的 Firefox 尚不支持 greasemonkey 扩展。

因此,我参考了 Wladimir Palant 的回答 here 并通过参考 mozilla 文档着手构建我的插件。这是我使用 jpm init:

创建的文件夹结构
--data>
    - redditplus.js //my userscript file. 
--index.js //main entry point
--package.json
--README.md

下面是index.js的内容,主要入口点:

var data = require("self").data;
var pageMod = require("page-mod");

pageMod.PageMod({
  include: "*.reddit.com/*",
  contentScriptFile: data.url("redditplus.js"),
  contentScriptWhen: 'start'
});

然后我开始像这样构建我的插件:

jpm xpi

但是当我在firefox中安装编译好的@redditplus-0.0.1.xpi插件时,它不起作用!用户脚本应该突出显示任何未读的 reddit 评论或至少将一些日志写入控制台,但它什么也没做。我在这里错过了什么?

用户脚本有以下子句:

// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js

这意味着它需要 jquery 才能工作。

您需要在您的插件中包含适当的 jquery 文件并像这样传递它:

contentScriptFile: [data.url("jquery.js"), data.url("redditplus.js")]

The userscript is supposed to highlight any unread reddit comments or at least write some logs to console

要从 SDK 插件获取日志消息,您需要在 about:config

中设置以下内容
extensions.sdk.console.logLevel = info

并打开浏览器控制台 (ctrl+shift+j) 而不是选项卡的 devtools 控制台。

另一件事:由于用户脚本的默认设置是 @run-at document-end 使用 contentScriptWhen: 'start' 可能会破坏脚本。