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

我希望在该标签窗口中完成文档加载请求后将属性设置为标签。

因此,在OnStateChange方法中,我正在检查文档加载情况。
我已经使用了STATE_STOP和STATE_IS_DOCUMENT。

我想确定哪个标签窗口已与特定文档请求相关联。

我有从nsIWebProgress * aWebProgress获得的有效DOM Document指针,这是第一个输入
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,则可以节省很多时间。

10-06 04:19