首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firefox外接程序使用"jpm run",但不支持使用"jpm xpi“生成的.xpi文件。

Firefox外接程序使用"jpm run",但不支持使用"jpm xpi“生成的.xpi文件。
EN

Stack Overflow用户
提问于 2015-10-18 17:48:41
回答 1查看 266关注 0票数 2

我正在使用Firefox外接程序SDK开发火狐插件。我跟踪了入门教程

Firefox版本: 41.0.2

我的程序是:

  1. jpm run -> OK加载项工作正常
  2. jpm xpi --> OK :创建@myAddon.xpi (JPM成功地在.创建了.xpi )
  3. 使用@myAddon.xpi -> NOK 当我试图在我的火狐中安装外接程序(从文件-> -> @myAddon.xpi安装外接程序)时,我收到了一条消息“安装成功”。看起来不错。但是,附加功能不起作用。什么都没发生。

那么,为什么jpm run测试正常,但在安装.xpi文件之后不能工作?

我可以和你分享代码,但是这种情况怎么会发生呢?如果它在测试中工作,我希望它在“释放”中工作。我没有收到任何错误或警告。

高级别:

Index.js

代码语言:javascript
复制
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

代码语言:javascript
复制
self.port.on('got-request', function (data) {
    console.log(data);
});

编辑(从注释中移动):

我发现一些有趣的东西..。取决于FireFox中的隐私级别,addon是否起作用。(选项->隐私->历史“记住历史”或“永远不记得历史”)-记住历史

EN

回答 1

Stack Overflow用户

发布于 2016-08-05 15:47:19

正如您已经确定的,如果您希望在私有浏览模式中使用火狐外接程序SDK外接程序,则需要在https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json文件中添加值为true的键private-browsing

如果没有使用其他权限,则可以向package.json文件中添加一行,如下所示:

代码语言:javascript
复制
"permissions": {"private-browsing": true}

关于编写用于私人浏览的SDK插件的Firefox文档模式特别指出,在下列任何情况下,require("sdk/private-browsing").isPrivate()方法都将返回true (重点是我的):

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

如果您没有"private-browsing": true,那么,作为文献状态,将出现以下情况(强调我的情况):

  • 视窗模块不会列出任何专用浏览器窗口,不会为私有浏览器窗口生成任何事件,也不会让“外接程序”打开任何专用浏览器窗口。
  • 制表符模块将不会列出属于私有浏览器窗口的任何选项卡,并且加载项不会接收此类选项卡的任何事件。
  • 任何 用户界面 组件都不会显示在私有浏览器windows中。
  • 使用上下文菜单创建的任何菜单或菜单项都不会显示在属于私有浏览器窗口的上下文菜单中。
  • 页-模模块不会将内容脚本附加到属于私有浏览器窗口的文档中。
  • 如果活动窗口是专用浏览器窗口,则不会显示任何面板对象。
  • 选择模块将不包括在私有浏览器窗口中所做的任何选择。

如果您使用的配置文件配置为在没有"private-browsing": true权限的情况下永远不会记住历史,那么您的外接程序就会显得不起作用。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33201222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档