如何引用包含窗口的XUL iframe

时间:2011-07-08 23:36:13

标签: javascript firefox-addon xul

从Firefox扩展程序中可以获得包含内容HTML窗口的XUL iframe /浏览器。注意我不是问如何获取当前浏览器(gBrowser)或browser.xul窗口。我有目标/内容HTML窗口句柄,我想在XUL树中跟进它(到包含它的XUL元素)。

getting-a-reference-to-the-parent-iframe建议对于HTML iframe,您需要遍历所有iframe以找到正确的iframe,但我想知道是否有一些特定于Firefox的方式来访问包含XUL iframe(来自特权/扩展代码) )。

3 个答案:

答案 0 :(得分:1)

aWindow.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
       .getInterface(Components.interfaces.nsIWebNavigation)
       .QueryInterface(Components.interfaces.nsIDocShell)
       .chromeEventHandler

请注意,在Firefox 3.6和之前的版本中,它会返回一个XPCNativeWrapper,您可能需要将其解包。

答案 1 :(得分:0)

从扩展程序的角度来看,“window”是Firefox的顶级chrome窗口,包含特殊的< vbox>和< hbox>按钮,工具栏等的元素。如果你去File - >你可以在DOM Inspector中看到这些元素。检查Chrome文档 - > (浏览器窗口)。要从扩展程序的Javascript获取当前页面框架,请使用content

要获取外部窗口,请使用window.parent或window.parent.top。如果内部文档是chrome特权的,那么您可以在窗口级别检查特殊属性或变量。

答案 2 :(得分:0)

在扩展程序中,您的代码通常已在主窗口中执行,因此您只需使用gBrowser(请参阅https://developer.mozilla.org/en/Code_snippets/Tabbed_browser#From_main_window)。

如果你的代码在另一个窗口中运行,那么window mediator就是你的朋友:https://developer.mozilla.org/en/Code_snippets/Tabbed_browser#From_a_dialog