我正在使用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,则可以节省很多时间。