每个标签只能看到一次onload事件

时间:2012-10-19 22:53:19

标签: c++ internet-explorer bho

我有一个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 个答案:

答案 0 :(得分:1)

BeforeNavigate可能为时尚早。在第二次和后续的电话中,我怀疑你正在使用旧窗口。请尝试使用NavigateComplete2。