nsIXULWindow vs nsIDOMWindow

时间:2014-02-07 11:33:43

标签: dom firefox-addon listener xul

我想知道nsIDOMWindow(由Services.wm.getWindowEnumerator返回的服务和Services.wm.getXULWindowEnumerator返回的nsIXULWindow之间的区别。

我问的原因是因为我大量使用windowListener(https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIWindowMediator?redirectlocale=en-US&redirectslug=nsIWindowMediator#addListener%28%29

我在MDN上创建了一个示例,但不明白两个窗口之间的区别。我在想,如果我这样做,我可以做一个更好的例子。 感谢

1 个答案:

答案 0 :(得分:1)

NSIXULWindow是一个XUL应用程序对象模型(AOM)窗口:

#document
  window                 main-window
    ...
      browser
        #document
          window         myExtensionWindow
  

正如HTML在DOM中反映为linklayerimg等节点一样,XUL反映在XUL小部件层次结构中的应用程序对象模型中:{{ 1}},browsermenu等等。 DOM和AOM构成了一种连续体,其整体可以从XUL所依据的标准中进行操作。

NSIDOMWindow是一个HTML文档对象模型(DOM)窗口:

  

当XUL窗口包含能够显示页面的窗口小部件时,例如menuitem<browser>,该窗口小部件中的文档自然会与chrome窗口本身的文档分开。每个子文档也有一个Window对象,尽管子文档的常识没有窗口。

     

同样适用于在<iframe>标签内打开的镀铬窗口。选项卡中打开的chrome文档上方的元素与chrome文档是分开的。

<强>参考