Addon可以在jpm run上附加脚本,但不能在实际的xpi上附加脚本

辛托

我对addon-sdk还是很陌生,遇到了一个我无法解释的问题。到目前为止,我一直在使用jpm run来测试所有内容-一切都很好。现在,我即将完成要完成的工作,因此我想在“正常”浏览器中对其进行测试-主要是在几天内使用它来查看一切是否按预期工作。

但是,安装过程已经引发了两条错误消息:

[异常...“组件返回失败代码:0x80004005(NS_ERROR_FAILURE)[nsIURI.hostPort]” nsresult:“ 0x80004005(NS_ERROR_FAILURE)”位置:“ JS框架::资源://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());

工作正常,但是在

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

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

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

不建议在内容处理中使用nsIFile。NetUtil.jsm:335:12

<不可用> timers.js:43

这是错误,我不知道该怎么办,因为所有这些都可以通过“ jpm run”正常运行。因此,我将不胜感激,因为我完全不知道这里发生了什么。

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

谢谢!

编辑:我将代码上传到github。也许这使我更容易。

https://github.com/Azlond/TrackingProtector

上述代码位于data / privacyProtector / js / panel.js,index.js第66-91行和data / privacyProtector / 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
});

这样,选项页面可以很好地工作。我遇到了一个新问题,但是我会问一个新问题,这样它可以是一个独立的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用户脚本通知可以在Chrome上运行,但不能在Firefox上运行?

来自分类Dev

脚本可以在实时服务器上正常运行,但不能在wamp上

来自分类Dev

脚本可以在CentOS上正常运行,但不能在RHEL5上运行

来自分类Dev

CDN可以正常工作,但不能在ASP.NET上使用本地托管脚本

来自分类Dev

尝试在选项卡就绪事件上附加脚本时,Firefox SDK JPM错误

来自分类Dev

脚本的功能可以在调整大小时正常工作,但不能在document.ready上正常工作

来自分类Dev

为什么jQuery脚本可以在本地主机上运行但不能在Web服务器上运行?

来自分类Dev

Firefox Addon-SDK jpm menuitem模块:“工具”菜单栏上未显示该图像

来自分类Dev

您可以附加挂钩脚本以在Windows登录和注销事件上运行吗?

来自分类Dev

Bash脚本可以在家里调用,但不能在脚本目录中调用

来自分类Dev

为什么该bash脚本不能在Ubuntu上执行,但是可以在在线环境上执行呢?

来自分类Dev

同一台Google Cloud Storage上传脚本可以在一台PC上运行,但不能在另一台PC上运行,为什么?

来自分类Dev

Python串行可以在Shell中工作,但不能在脚本中工作吗?

来自分类Dev

我的脚本可以在jsFiddle中使用,但不能在我的网页中使用

来自分类Dev

程序可以在终端上正常运行,但不能在Shell脚本中运行

来自分类Dev

命令可以在命令行中使用,但不能在Shell脚本中使用

来自分类Dev

为什么sed命令可以交互工作,但不能在我的脚本中工作?

来自分类Dev

带有Paramiko的Python SSHTunnel-CLI可以运行,但不能在脚本中运行

来自分类Dev

脚本可以在Powershell中工作,但不能在C#中工作

来自分类Dev

Java脚本中的多个功能本身可以单独工作,但不能在一个脚本中工作

来自分类Dev

CMake可以在Mac上运行,但不能在Linux上运行?

来自分类Dev

PHP登录可以在XAMPP上使用,但不能在Web服务器上使用?

来自分类Dev

Pycharm调试器可以在Ubuntu上运行,但不能在Windows上使用相同的代码

来自分类Dev

更改某些值后,iframe可以在chrome上运行,但不能在mozilla上运行

来自分类Dev

为什么sudo可以在Linux上运行但不能在Android上运行?

来自分类Dev

测试的顺序可以在python 2上完美运行,但不能在python 3上完美运行

来自分类Dev

httpClient.get在模拟器上可以,但不能在android设备上使用

来自分类Dev

CSV from_writer可以在stdout()上使用,但不能在from_path上使用

来自分类Dev

Flexbox可以在Firefox上运行,但不能在Edge上运行吗?

Related 相关文章

  1. 1

    用户脚本通知可以在Chrome上运行,但不能在Firefox上运行?

  2. 2

    脚本可以在实时服务器上正常运行,但不能在wamp上

  3. 3

    脚本可以在CentOS上正常运行,但不能在RHEL5上运行

  4. 4

    CDN可以正常工作,但不能在ASP.NET上使用本地托管脚本

  5. 5

    尝试在选项卡就绪事件上附加脚本时,Firefox SDK JPM错误

  6. 6

    脚本的功能可以在调整大小时正常工作,但不能在document.ready上正常工作

  7. 7

    为什么jQuery脚本可以在本地主机上运行但不能在Web服务器上运行?

  8. 8

    Firefox Addon-SDK jpm menuitem模块:“工具”菜单栏上未显示该图像

  9. 9

    您可以附加挂钩脚本以在Windows登录和注销事件上运行吗?

  10. 10

    Bash脚本可以在家里调用,但不能在脚本目录中调用

  11. 11

    为什么该bash脚本不能在Ubuntu上执行,但是可以在在线环境上执行呢?

  12. 12

    同一台Google Cloud Storage上传脚本可以在一台PC上运行,但不能在另一台PC上运行,为什么?

  13. 13

    Python串行可以在Shell中工作,但不能在脚本中工作吗?

  14. 14

    我的脚本可以在jsFiddle中使用,但不能在我的网页中使用

  15. 15

    程序可以在终端上正常运行,但不能在Shell脚本中运行

  16. 16

    命令可以在命令行中使用,但不能在Shell脚本中使用

  17. 17

    为什么sed命令可以交互工作,但不能在我的脚本中工作?

  18. 18

    带有Paramiko的Python SSHTunnel-CLI可以运行,但不能在脚本中运行

  19. 19

    脚本可以在Powershell中工作,但不能在C#中工作

  20. 20

    Java脚本中的多个功能本身可以单独工作,但不能在一个脚本中工作

  21. 21

    CMake可以在Mac上运行,但不能在Linux上运行?

  22. 22

    PHP登录可以在XAMPP上使用,但不能在Web服务器上使用?

  23. 23

    Pycharm调试器可以在Ubuntu上运行,但不能在Windows上使用相同的代码

  24. 24

    更改某些值后,iframe可以在chrome上运行,但不能在mozilla上运行

  25. 25

    为什么sudo可以在Linux上运行但不能在Android上运行?

  26. 26

    测试的顺序可以在python 2上完美运行,但不能在python 3上完美运行

  27. 27

    httpClient.get在模拟器上可以,但不能在android设备上使用

  28. 28

    CSV from_writer可以在stdout()上使用,但不能在from_path上使用

  29. 29

    Flexbox可以在Firefox上运行,但不能在Edge上运行吗?

热门标签

归档