Firefox附加组件:cfx-run运行良好,cfx-xpi运行良好,但附加组件没有任何作用

Firefox add-ons: cfx run works great, cfx xpi works but the add-on does nothing

本文关键字:运行 组件 任何 作用 cfx-run cfx-xpi Firefox      更新时间:2024-05-26

我一直在开发一个Firefox扩展(基本上只是一个"内容脚本"或"页面模块",无论哪个术语对你有用),当我使用"cfx-run"时,它的工作原理与预期完全一样,但当我使用了"cfx-xpi"并安装它时,什么都没有发生。在cfx运行中,我的内容脚本运行得很好,在命令提示符下没有任何错误。如果这有任何帮助的话,当我退出测试运行时,我确实看到了一个错误:

###!!! [Child][DispatchAsyncMessage] Error: (msgtype=0xAA0001,name=PTexture::Msg
___delete__) Route error: message sent to unknown actor ID

但这看起来与JavaScript错误不同(对我来说,这看起来更像是"内部"错误,也许是SDK的问题?)。不管怎样,当我执行cfx-xpi(带或不带"--no-strip-xpi"选项)所有似乎都很好。控制台没有错误,安装看起来也很好),但当我转到我正在为其编写脚本的页面时,什么都没有发生。页面像往常一样加载,但内容脚本什么都没做;页面没有更改,没有错误,实际上只是没有任何功能提示。

所以我当然花了一些时间在谷歌和这个网站上。我发现了几个稍微相似的问题,但要么不相关,要么没有答案。以下是其中的一些:创建xpi不起作用(这是mac与Windows的问题)使用插件SDK创建XPI包?(这个有点接近,但我在main.js中没有使用contentScript,而是像那个家伙建议的那样使用了PageMod对象)Firefox SDK示例加载项导出的XPI操作按钮没有';t显示(我的控制台没有显示任何错误,所以这个也没有帮助)。

当然,我尝试了所有显而易见的东西(重新启动Firefox、重新启动计算机、更改脚本内容等),结果仍然是一样的:在cfx运行中很好,编译和安装很好,但在cfx-xpi之后什么都不做。

此外,如果这对你们有帮助,这里是我的main.js:

var data = require("sdk/self").data;
var pageMod = require("sdk/page-mod");
pageMod.PageMod({
    include: "*.somepage.com",
    // NOTE TO SELF: include all object files here.
    contentScriptFile: [data.url("Data.js"), data.url("Layout.js"), data.url("HTML.js"), data.url("Restyler.js"),     data.url("Shortcut.js"), data.url("ARIA.js"), data.url("Apricot.js")]
});

这与我在文档和教程中所读到的内容非常相似,但无论出于什么原因,它仍然只能在cfx运行中工作。因此,不幸的是,我真正能肯定地告诉你的是,某个地方正在以某种方式阻止、覆盖或以其他方式阻止XPI做它的事情(神秘?当然。沮丧?你不知道…):))

很抱歉,我不知道还能说什么,哈哈。我知道JavaScript(和许多其他语言),但这是我第一次尝试使用SDK(这似乎比它的价值更麻烦)。天哪,我希望他们能更新GreaseMonkey编译器,或者至少带回插件生成器。。。哦,我大声说出来了吗?:)

不过,抛开玩笑不谈,任何潜在的解决方案、变通方法或其他见解都将不胜感激。谢谢

您在Firefox设置中使用私人浏览吗?如果是,那么您需要添加

"permissions": {"private-browsing": true}

到package.json文件。

更多信息:https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/private-browsing#Opting_into_private_browsing