我有一个监听 onload 事件的 BHO。这是在每个 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事件,之后访问的页面不触发。我找不到我遗漏了什么或做错了什么。
最佳答案
BeforeNavigate 可能还为时过早。在第二次和随后的通话中,我怀疑您正在使用旧窗口。请尝试使用 NavigateComplete2。
关于c++ - 每个选项卡只看到一次 onload 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12983520/