在Firefox SDK扩展中访问Window Mediator

时间:2016-04-11 16:26:37

标签: javascript firefox firefox-addon

为什么Serivces.wm未定义,当我使用Firefox Addon SDK(JPM)时,以及index.js中的以下代码:

var self = require("sdk/self");
const { Cu } = require("chrome");
let Services = Cu.import("resource://gre/modules/Services.jsm");

require("sdk/ui/button/action").ActionButton({
  id: "list-tabs",
  label: "List Tabs",
  icon: "./icon-16.png",
  onClick: myTestFunc
});

function myTestFunc() {
  var windows = Services.wm.getEnumerator("navigator:browser");
  while (windows.hasMoreElements())
    iterateWindows(windows.getNext().QueryInterface(Components.interfaces.nsIDOMWindow));
}

在Firefox中单击我的插件按钮时出现的错误:

TypeError: Services.wm is undefined

任何建议都会有很大的帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

我不确定为什么会失败,也许这与chrome API的弃用有关。您可以使用公开的high level window API访问浏览器窗口。

Windows API页面报告此示例:

var windows = require("sdk/windows");
for (let window of windows.browserWindows) {
  console.log(window.title);
}

console.log(windows.browserWindows.length);