描述:
标题多搞几个关键词
方式1:
我在DISPID_DOCUMENTCOMPLETE事件中
a.AtlAdvise(pHtmlWin,(IDispatch*)this,DIID_HTMLWindowEvents2,&dwEvent);抓取对应的DISPID_HTMLWINDOWEVENTS2_ONUNLOAD 事件,但是IHTMLEventObj::get_srcElement对应的获取的是空值
或者
b.
AtlAdvise(pHtmlWin,(IDispatch*)this,DIID_HTMLDocumentEvents2,&dwEvent);抓取对应的DISPID_HTMLDOCUMENTEVENTS2_ONREADYSTATECHANGE
事件,但是IHTMLEventObj::get_srcElement对应的获取的是空值
方式2:
http://www.codeproject.com/KB/IP/detecting_the_ie_refresh.aspx
缺点,如果有框架或者iframe则不知道是哪个页面发出的刷新
解决方案1:
你的思路是什么啊?让我们学习一下
解决方案2:对啊,知道的 传授一下,
解决方案3:遍历根doc下的所有的frame,针对每个frame的window都建立事件连接
解决方案4:HRESULT CViewSource::Invoke(DISPID dispidMember,解决方案5:
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS* pDispParams,
VARIANT* pvarResult,
EXCEPINFO* pExcepInfo,
UINT* puArgErr)
{
if (!pDispParams)
return E_INVALIDARG;
// Document complete
if (dispidMember == DISPID_DOCUMENTCOMPLETE)
{
GetDocumentContent();
m_bDocumentCompleted = true;
}
// Download complete (to catch refresh and F5)
if (dispidMember == DISPID_DOWNLOADCOMPLETE)
if (m_bDocumentCompleted)
GetDocumentContent();
// Quit
if (dispidMember == DISPID_ONQUIT)
OnQuit();
return S_OK;
}
IE的刷新针对的是根文档,即IWebBrowser::QueryInterface(IID_IHTMLDocument2, &pDoc);得到的文档,里面的frame全部都一起刷新。刷新后所有的文档指针可能都变了,你应该连接DWebBrowserEvents2::DocumentComplete事件,重新获取文档接口

