Доступ к элементу вкладки Firefox в nsIWebProgressListener::OnStateChange с использованием C++

Я разрабатываю расширение для версий Firefox 3.0-3.5 с использованием VS2008.

Я хочу установить атрибут для вкладки после завершения запроса на загрузку документа в этом окне вкладки.

Итак, в методе OnStateChange я проверяю загрузку документа. Я использовал для этого STATE_STOP и STATE_IS_DOCUMENT.

Я хочу определить, какое окно вкладки было связано с конкретным запросом документа.

У меня есть действительный указатель документа DOM, полученный от nsIWebProgress *aWebProgress, который является 1-м входным параметром 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));
}

Я попытался получить указатель nsIDOMDocumentXBL с помощью QIing указателя nsIDOMDocument (domDoc в моем примере), но это не удается с кодом ошибки 0x80004002 (2147500034), т. е. NS_ERROR_NO_INTERFACE.

Как получить элемент вкладки, соответствующий запросу загрузки документа.

Может ли кто-нибудь помочь мне?

Заранее спасибо, Вайбхав Д. Гаде.


person Vaibhav Gade    schedule 19.03.2010    source источник


Ответы (1)


ЕСЛИ я правильно понял вопрос и вам нужно окно содержимого, вам, вероятно, понадобится https://developer.mozilla.org/en/Working_with_windows_in_chrome_code#Accessing_the_elements_of_the_top-level_document_from_a_child_window, чтобы получить окно Chrome, затем запустите реализацию gBrowser.getBrowserForDocument в окне Chrome.

Вы бы сэкономили много времени, если бы перестали писать на C++ и переключились на JS для таких вещей.

person Nickolay    schedule 09.01.2011
comment
Определенно JS — это путь сюда. Вы сэкономите много головной боли. - person CAFxX; 10.01.2011