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

发布于 2024-11-18 23:14:37 字数 387 浏览 3 评论 0 原文

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

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

From a Firefox extension is there a way to get the XUL iframe/browser that contains a content HTML window. Note I am not asking how to get the current browser (gBrowser) or the browser.xul window. I have target/content HTML window handle, I want to follow it up in the XUL tree (to the XUL element that contains it).

getting-a-reference-to-the-parent-iframe suggest that for HTML iframes you need to iterate through all iframes to find the right one, but I am wondering if there is some Firefox-specific way of accessing a containing XUL iframe (from privileged/extension code).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

半山落雨半山空 2024-11-25 23:14:37
aWindow.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
       .getInterface(Components.interfaces.nsIWebNavigation)
       .QueryInterface(Components.interfaces.nsIDocShell)
       .chromeEventHandler

请注意,在 Firefox 3.6 及之前的版本中,这会返回一个 XPCNativeWrapper,然后您可能想要解开它。

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

Note that in Firefox 3.6 and previously this returns an XPCNativeWrapper which you then probably want to unwrap.

你对谁都笑 2024-11-25 23:14:37

在扩展中,您的代码通常已经在主窗口中执行,因此您只需使用 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

In an extension your code is typically already executing in the main window, so you simply use gBrowser (see https://developer.mozilla.org/en/Code_snippets/Tabbed_browser#From_main_window).

If your code runs in a different window then window mediator is your friend: https://developer.mozilla.org/en/Code_snippets/Tabbed_browser#From_a_dialog

得不到的就毁灭 2024-11-25 23:14:37

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

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

From an extension's point of view, "window" is the top level chrome window of Firefox, containing special <vbox> and <hbox> elements for the buttons, toolbars, etc. You can see these in the DOM Inspector if you go to File -> Inspect Chrome Document -> (Browser Window). To get the current page frame from extension's Javascript, use content.

To get the outer window, use window.parent, or window.parent.top. If the inner document is chrome-privileged, perhaps you could check for a special attribute or variable at the window level.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文