c++ - 每个选项卡只看到一次 onload 事件

标签 c++ internet-explorer bho

我有一个监听 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/

相关文章:

c++ - 组件对象模型 (COM):IMalloc::Alloc 在哪里分配内存?

c++ - 将存储在 std::string 中的二进制数据转换为 wxString

c++ - 从 C++ 转换为 C

internet-explorer - Jquery post 无法在 IE 8 或更早版本中工作

internet-explorer - 在 HKCU 中为每个用户注册 BHO(或工具栏)

c++ - BHO 中的 CreateDialog 总是失败并出现错误 1813(未找到资源)

c++ - 使用大输入时输出错误

css - IE 11 中的问题 : Fixed background move up-down with scroll

css - Internet Explorer 间距问题将内容向下推,CSS

javascript - 无法在 IE9 中从 Javascript 调用 BHO 方法