【问题标题】:Fireox, how get tabs object?Fireox,如何获取标签对象?
【发布时间】:2015-11-22 18:34:26
【问题描述】:

我尝试获取当前浏览器窗口的标签

var tabs = require("sdk/tabs");

并捕获所有新标签

tabs.on('load', function(tab) {
    console.info( tab.url );
});

如果我通过 jpm run 运行 firefox,一切正常。但是,如果我构建 xpi 并将其安装到 firefox,那么我将通过其他空窗口获取选项卡(如果我调用 tabs.open 打开新窗口)

如何解决?

现在我正在尝试以下simple example

var buttons = require('sdk/ui/button/action');
var tabs = require("sdk/tabs");

var button = buttons.ActionButton({
  id: "mozilla-link",
  label: "Visit Mozilla",
  icon: {
    "16": "./icon-16.png",
    "32": "./icon-32.png",
    "64": "./icon-64.png"
  },
  onClick: handleClick
});

function handleClick(state) {
  tabs.open("http://www.mozilla.org/");
}

而且这个例子只有在我运行“jpm run”时才有效。 如果我构建扩展并简单地运行 firefox(使用插件),则不会创建按钮。

【问题讨论】:

  • 是否存在其他空窗口并且您不想获取它们?还是没有其他窗口?
  • 编辑后查看我的帖子
  • 抱歉,您的问题非常令人困惑。您的帖子中有两个问题:1.) tabs.open 在新窗口中打开。 2.) 操作按钮不可见?

标签: firefox tabs firefox-addon firefox-addon-sdk


【解决方案1】:

我认为您的 xpi 找不到图标,因此您的插件似乎无法正常工作。 这些图标应该在您的./data 目录中,此外,在您的 package.json 中,最好指定您的 main。您的工作扩展的文件层次结构是:

├--data/
   ├-- icon-16.png
   ├-- icon-32.png
   ├-- icon-64.png
├--lib/
   ├-- main.js   
├--package.json

package.json 看起来像:

{
  "name": "stackexample",
  "title": "stackexample",
  "id": "mail@mail.com",
  "description": "An stackoverflow example",
  "author": "mail@mail.com",
  "main": "./lib/main.js",
  "version": "0.0.1"
}

【讨论】:

  • 这可能是解决方案。
【解决方案2】:

在 'ready' 事件发出后的 firefox 中,可以使用与选项卡内容相关的所有属性。您无法在加载事件时访问选项卡的属性。

Please refer to this link of addon sdk tabs ready event

【讨论】:

    【解决方案3】:

    我找到答案了

    如果设置设置历史 “永远不要记住历史”我遇到了问题

    如果设置 “记住历史”的问题已经解决了

    这很奇怪,我知道

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      相关资源
      最近更新 更多