从Firefox扩展中可以获得包含内容HTML窗口的XUL iframe/浏览器。请注意,我不是在问如何获得当前浏览器(gBrowser)或浏览器。xul窗口。我有目标/内容HTML窗口句柄,我想在XUL树中跟踪它(到包含它的XUL元素)。
获得对父-iframe的引用建议,对于HTML iframe,您需要遍历所有iframe以找到正确的iframe,但我想知道是否有一些firefox特定的方式访问包含XUL的iframe(从特权/扩展代码)。
aWindow.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebNavigation)
.QueryInterface(Components.interfaces.nsIDocShell)
.chromeEventHandler
请注意,在Firefox 3.6和以前的版本中,这会返回一个XPCNativeWrapper,然后您可能想要展开它。
在扩展中,您的代码通常已经在主窗口中执行,因此您只需使用gBrowser
(参见https://developer.mozilla.org/en/Code_snippets/Tabbed_browser#From_main_window)。
如果您的代码在不同的窗口中运行,那么窗口中介是您的朋友:https://developer.mozilla.org/en/Code_snippets/Tabbed_browser#From_a_dialog
从扩展的角度来看,"window"是Firefox的顶级chrome窗口,包含用于按钮,工具栏等的特殊
要获取外部窗口,使用window。Parent,或者window。Parent。top。如果内部文档是chrome特权,也许您可以在窗口级别检查一个特殊的属性或变量。