Addon在jpm运行时很好地附加了脚本,但在实际的xpi中却没有



我对插件sdk还很陌生,遇到了一个无法解释的问题。到目前为止,我一直在使用jpm-run来测试所有东西,而且一切都很好。现在,我即将完成我想要完成的任务,所以我想在"普通"浏览器中对它进行测试——主要是在几天内使用它,看看一切是否如预期。

然而,安装过程已经抛出两条错误消息:

[异常…"组件返回的故障代码:0x80004005(NS_ERROR_failure)[nsIURI.hostPort]";nsresult:"0x80004005(NS_ERROR_FAILURE)";位置:";JS框架:resource://gre/modules/PopupNotifications.jsm::PopupNotifications_refreshPanel/<:线667";数据:否](未知)

被扔了两次。

嗯,到目前为止,一切都很好(或坏)。我的插件添加的切换按钮仍然显示。单击该按钮会打开一个面板,其中包含一个仍在工作的html页面。panel.html包含一个按钮,这就是我遇到麻烦的原因。

如果点击,按钮会向我的主插件文件发送一条消息:

optionsButton.addEventListener("click", function(){
    self.port.emit("options-clicked");
});

index.js监听的:

panel.port.on("options-clicked", function () {
    
    tabs.open("./privacyProtector/options.html");
    panel.hide();
    var optionsTab = tabs[tabs.length - 1];
    var worker = optionsTab.attach({
        contentScriptFile: "./privacyProtector/js/internalOptions.js",
    });
    /* send current settings to options */
    worker.port.emit("initialize", createSettingsJSON());
});

现在options.html选项卡被打开(面板消失),但它看起来好像没有附加contentScriptFile。我试图弄清楚代码在哪里停止工作,但一直没能。之后的"console.log()"

worker.port.emit("initialize", createSettingsJSON());

工作正常,但是的"console.log()"

self.port.on("initialize", function (message) {
    initialize(message);
});

(位于internalOptions.js中)不会出现在控制台中。

无论如何,浏览器控制台报告:

不赞成在内容过程中使用nsIFile。NetUtil.jsm:335:12

<不可用>timers.js:43

这些都是错误,我不知道该怎么办,因为所有这些都能很好地处理";jpm运行";。因此,我非常感谢任何帮助,因为我完全不知道这里发生了什么。

如果需要,我也可以发布更多的代码,但我认为这篇文章已经足够长了

谢谢!

编辑:我将代码上传到github。也许这会让帮助我变得更容易

https://github.com/Azlond/TrackingProtector

上述代码位于data/privacyProtector/js/panel.js、index.js行66-91和data/privatyProtector/js/internalOptions.js中

好吧,我设法解决了这个问题。

现在,每当打开选项页面时,我都会使用pagemod来附加脚本,而不是手动将脚本附加到打开的选项卡。

var pageMod = require("sdk/page-mod");
pageMod.PageMod({
    include: "resource://protector/data/privacyProtector/options.html",
    contentScriptFile: "./privacyProtector/js/internalOptions.js",
    contentScriptWhen: "end",
    onAttach: sendSettings
});

通过这种方式,选项页面工作得非常好。我遇到了一个新问题,但我会问一个新的问题,这样这就可以成为一个独立的问题。

相关内容

  • 没有找到相关文章

最新更新