2012-10-19 21 views
1

我有一个BHO来监听onload事件。这里是每个BeforeNavigate2事件的代码(简化)运行:onload事件每个标签只能看到一次

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。