如何获得对包含窗口的XUL iframe的引用



从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窗口,包含用于按钮,工具栏等的特殊元素。你可以在DOM检查器中看到这些,如果你去文件->检查Chrome文档->(浏览器窗口)。要从扩展的Javascript中获取当前页面框架,使用content.

要获取外部窗口,使用window。Parent,或者window。Parent。top。如果内部文档是chrome特权,也许您可以在窗口级别检查一个特殊的属性或变量。

最新更新