标题多搞几个关键词
方式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:
我在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则不知道是哪个页面发出的刷新
但是刷新的时候根本就没有DocumentComplete事件了
而且不是顶层的iframe也是可以刷新的
DISPID_DOWNLOADCOMPLETE
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;
}
有框架或者iframe就不灵了
获取DISPID_DOCUMENTCOMPLETE?
刷新的时候没有代号为DISPID_DOCUMENTCOMPLETE的
DISPID_DOWNLOADCOMPLETE倒是有,但是不能区分哪个IFRAME发出的