c++ - 使用 C++ 访问 nsIWebProgressListener::OnStateChange 中的 Firefox 选项卡元素

标签 c++ firefox firefox-addon

我正在使用 VS2008 为 Firefox 3.0-3.5 版本开发扩展。

一旦文档加载请求在该选项卡窗口中完成,我想将属性设置为该选项卡。

所以在 OnStateChange 方法中,我正在检查文档加载。 我为此使用了 STATE_STOP 和 STATE_IS_DOCUMENT。

我想确定哪个选项卡窗口已与特定文档请求相关联。

我有从 nsIWebProgress *aWebProgress 获得的有效 DOM 文档指针,这是第一个输入 OnStateChange 的参数。

if ((aStateFlags & STATE_STOP) && (aStateFlags & STATE_IS_DOCUMENT))
{
    nsCOMPtr<nsIDOMWindow> domwin;
    nsCOMPtr<nsIDOMDocument> domDoc;
    aWebProgress->GetDOMWindow(getter_AddRefs(domwin));
    domwin->GetDocument(getter_AddRefs(domDoc));
}

我曾尝试通过 QIing nsIDOMDocument 指针(在我的示例中为 domDoc)获取 nsIDOMDocumentXBL 指针,但失败并显示错误代码 0x80004002 (2147500034),即 NS_ERROR_NO_INTERFACE。

如何获取文档加载请求对应的tab元素

有人能帮帮我吗?

提前致谢, Vaibhav D. Gade。

最佳答案

如果我正确理解了这个问题并且你想要一个内容窗口,你可能需要 https://developer.mozilla.org/en/Working_with_windows_in_chrome_code#Accessing_the_elements_of_the_top-level_document_from_a_child_window获取 chrome 窗口,然后在 chrome 窗口中运行 gBrowser.getBrowserForDocument 的实现。

如果你停止编写 C++ 并为此类事情转而使用 JS,你会节省很多时间。

关于c++ - 使用 C++ 访问 nsIWebProgressListener::OnStateChange 中的 Firefox 选项卡元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2475938/

相关文章:

c++ - 一个人的嵌入式项目示例

c++ - 处理 IDL 序列返回类型的内存

JQuery:animate() 在 IE 中无法按预期工作

jquery - 从 SWF 上传按钮中删除虚线轮廓

sockets - XPCOM 套接字正在关闭。如何让它保持活力?

c++ - C++ 是否会自动转换某些操作重载?

c++ - 如何在 C++ 中删除指向数组的指针

javascript - 跨站点 xmlhttp 请求返回状态 0

javascript - 如何在 Firefox 中使用 XUL 创建底部停靠面板?

javascript - AJAX 请求 - cookie 认证