繁体   English   中英

Firefox加载项可与“ jpm run”一起使用,但不能与“ jpm xpi”生成的.xpi文件一起使用

[英]Firefox add-on works with “jpm run”, but not whith .xpi file generated with “jpm xpi”

我正在使用Firefox插件SDK开发Firefox插件。 我遵循了入门教程

Firefox版本:41.0.2
我的过程是:

  1. jpm run >确定附加组件工作正常
  2. jpm xpi xpi- >确定:创建@ myAddon.xpi (JPM [info]已在...成功创建.xpi
  3. 使用@ myAddon.xpi- > NOK
    当我尝试在Firefox中安装插件(插件->从文件安装-> @ myAddon.xpi )时,出现消息“安装成功”。 看起来不错。 但是,该附加组件不起作用。 什么都没发生。

因此,为什么使用jpm run的测试jpm run正常jpm run ,但是在安装.xpi文件后却无法正常工作???

我可以与您共享代码,但是这种情况怎么发生? 如果它可以在测试中工作,我希望它可以在“发行版”中工作。 我没有错误或警告。

高水平 :

Index.js

pageMod.PageMod({
    include: "*",
    contentScriptFile: [data.url("jquery-1.11.3.min.js"), data.url("./Compute.js")],
    onAttach: function (worker) {
        var currentUrl = tabs.activeTab.url;
        param = currentUrl;
        Request({
            url: param,
            onComplete: function (response) {
                var parsed = JSON.parse(response.text);
                worker.port.emit('got-request', parsed);
            }
        }).get();
    }

数据/ Compute.js

self.port.on('got-request', function (data) {
    console.log(data);
});

编辑(从评论中删除):
我发现一些有趣的事情。...取决于FireFox的隐私级别,该插件是否可以工作。 (选项->隐私->历史记录“记住历史记录”或“永远不要记住历史记录”)-记住历史记录--> addOn确定-“永远不要记住历史记录”-> addOn NOK任何想法

如您所确定,如果您希望Firefox附加SDK附加组件在“ 私有浏览”模式下工作,则需要在package.json文件中添加值为true private-browsing密钥。

如果您没有使用其他权限 ,则可以在package.json文件中添加以下内容:

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

Firefox文档中有关为私人浏览模式编写SDK附加组件的文档特别指出,当以下任一情况出现时, require("sdk/private-browsing").isPrivate()方法将返回true(强调我的意思):

  • 私人窗户,或
  • 属于私有窗口的标签,或者
  • 与私有窗口中托管的文档相关联的工作人员
  • 如果已将浏览器配置为从不记住历史记录,则为任何窗口,选项卡或工作程序(选项->隐私->历史记录)

如果您没有"private-browsing": true ,则如文档所述 ,将是以下情况(强调我的意思):

  • Windows模块不会列出任何专用浏览器窗口,不会为专用浏览器窗口生成任何事件,也不会让加载项打开任何专用浏览器窗口
  • 选项卡模块不会列出属于私有浏览器窗口的任何选项卡,并且加载项不会收到此类选项卡的任何事件
  • 任何ui组件都不会在专用浏览器窗口中显示
  • 使用上下文菜单创建的任何菜单或菜单项都不会显示在属于专用浏览器窗口的上下文菜单中
  • page-mod模块不会将内容脚本附加到属于私有浏览器窗口的文档
  • 如果活动窗口是专用浏览器窗口,则不会显示任何面板对象
  • 选择模块将不包括在私有浏览器窗口中进行的任何选择

最终的结果是,当您正在使用的配置文件配置为在package.json中没有"private-browsing": true权限的情况下永远无法记住历史记录时,您的加载项将无法正常工作。

如果确实将该权限放入package.json文件,则必须使用私有浏览模块require("sdk/private-browsing").isPrivate(object)来检查是否位于私有窗口或选项卡中。 如果您在这样的窗口或选项卡中,则无需存储有关此类环境的任何信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM