0

我正在尝试维护一个 Firefox 扩展,它依赖于获取当前的内部窗口 ID。在 Firefox 31 中,窗口对象有一个 QueryInterface:

components/foo.js:

Foo.prototype = {
  window: null,
  ...
  init: function(aWindow) {
    this.window = XPCNativeWrapper.unwrap(aWindow);
    var util = this.window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
    dump('Your inner window ID is: ' + util.currentInnerWindowID + '\n');
  },
  ...
  shutdown: function() {
  }
}

在 Firefox 32 中,window.QueryInterface 对象已经消失,我想知道如何获取当前的内部窗口 ID。

谢谢。

4

1 回答 1

0

调用 XPCNativeWrapper.unwrap 从窗口中删除 QueryInterface。

if (aWindow.QueryInterface) {
  util = XPCNativeWrapper.unwrap(aWindow.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils));
  dump('Your inner window ID is: ' + util.currentInnerWindowID + '\n');
}
于 2014-10-12T21:45:20.543 回答