Событие onload наблюдается только один раз для каждой вкладки

У меня есть BHO, который прослушивает событие onload. Вот код (упрощенный), запускаемый при каждом событии BeforeNavigate2:

CComQIPtr<IWebBrowser2> pBrowser(pDisp);

CComPtr<IDispatch> pUnk = NULL;
HRESULT hr = pBrowser->get_Document(&pUnk);

CComQIPtr<IHTMLDocument2> pHtmlDoc2(pUnk);

CComQIPtr<IHTMLWindow2> pWindow2;
pHtmlDoc2->get_parentWindow((IHTMLWindow2**) &pWindow2);

CComQIPtr<IHTMLWindow3> pWindow3(pWindow2);

VARIANT_BOOL result = VARIANT_TRUE;
CComBSTR onEvent(TEXT("onload"));
pDomEvent = new Page::DOMLoaded();

pWindow3->attachEvent(onEvent, pDomEvent, &result);

(Я удалил все проверки, чтобы упростить)

Событие onload запускается для первой страницы, но не для страниц, посещенных впоследствии. Я не мог выяснить, чего мне не хватает, или делаю не так.

1

Решение

BeforeNavigate, вероятно, слишком рано, чтобы сделать это. При втором и последующих вызовах я подозреваю, что вы работаете со старым окном. Попробуйте вместо этого NavigateComplete2.

1

Другие решения

Других решений пока нет …