获取Firefox 32扩展中的当前内部窗口ID

时间:2014-10-09 04:58:19

标签: firefox queryinterface

我试图维护Firefox扩展,它依赖于获取当前的内部窗口ID。在Firefox 31中,window对象具有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。

感谢。

1 个答案:

答案 0 :(得分: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');
}