判断一个页面加载完全完成的准确方法
2014-01-24 12:08
323 查看
!!http://www.codeproject.com/Articles/4411/IEHelper-Internet-Explorer-Helper-Class
!!http://hi.baidu.com/jakisou/item/e016473db5c99d637c034b90
public:
void DocumentComplete(LPDISPATCH pDisp, VARIANT* URL);
然后在实现文件中添加:
void CMyHtmlView::DocumentComplete(LPDISPATCH pDisp, VARIANT* URL)
{
// 这里写什么呢?
}
上面函数的实现部分写什么呢?就是前面所说的“判断页面是否加载完成”的代码了。我们从MS的这篇惨不忍睹的机器翻译的文章里,还是可以得到很多启发的,我修改了一下,使得代码适合于VC 2005+IE7的环境,如下:
void CMyHtmlView::DocumentComplete(LPDISPATCH pDisp, VARIANT* URL)
{
m_nCount++; // 这是一个类成员变量,用于计数
LPDISPATCH lpWBDisp = NULL;
HRESULT hr = NULL;
hr = m_pBrowserApp->QueryInterface(IID_IDispatch, (void**)&lpWBDisp);
ASSERT(SUCCEEDED(hr));
if (pDisp == lpWBDisp)
{
CString strMessage;
strMessage.Format(“页面加载完成!\n\n进入DocumentComplete函数的次数:%d”, m_nCount);
// Top-level Window object, so document has been loaded
MessageBox(strMessage);
}
lpWBDisp->Release();
}
http://blog.csdn.net/wangjia184/article/details/3684862
http://www.myexception.cn/vc-mfc/396586.html
设置一个定时器多等一下吧。
不光是百度,谷歌也是这样,为了尽快显示首页,页面设计得非常简单,等文档加载完成之后使用定时器再加载一个脚本标签,在脚本文件里通过DOM添加更多的页面内容,这都是加快页面显示速度的技巧。
OnDocumentComplete是在</html>标签处理完毕时就会发出,但是定时器都是在之后执行的,可能永远执行不完。
bool CMyInternetExplorer::WaitTillLoaded (int nTimeout) { READYSTATE result; DWORD nFirstTick = GetTickCount (); do { m_pWebBrowser->get_ReadyState (&result); if (result != READYSTATE_COMPLETE) Sleep (250); if (nTimeout > 0) { if ((GetTickCount () - nFirstTick) > nTimeout) break; } } while (result != READYSTATE_COMPLETE); if (result == READYSTATE_COMPLETE) return true; else return false; }
!!http://hi.baidu.com/jakisou/item/e016473db5c99d637c034b90
public:
void DocumentComplete(LPDISPATCH pDisp, VARIANT* URL);
然后在实现文件中添加:
void CMyHtmlView::DocumentComplete(LPDISPATCH pDisp, VARIANT* URL)
{
// 这里写什么呢?
}
上面函数的实现部分写什么呢?就是前面所说的“判断页面是否加载完成”的代码了。我们从MS的这篇惨不忍睹的机器翻译的文章里,还是可以得到很多启发的,我修改了一下,使得代码适合于VC 2005+IE7的环境,如下:
void CMyHtmlView::DocumentComplete(LPDISPATCH pDisp, VARIANT* URL)
{
m_nCount++; // 这是一个类成员变量,用于计数
LPDISPATCH lpWBDisp = NULL;
HRESULT hr = NULL;
hr = m_pBrowserApp->QueryInterface(IID_IDispatch, (void**)&lpWBDisp);
ASSERT(SUCCEEDED(hr));
if (pDisp == lpWBDisp)
{
CString strMessage;
strMessage.Format(“页面加载完成!\n\n进入DocumentComplete函数的次数:%d”, m_nCount);
// Top-level Window object, so document has been loaded
MessageBox(strMessage);
}
lpWBDisp->Release();
}
http://blog.csdn.net/wangjia184/article/details/3684862
http://www.myexception.cn/vc-mfc/396586.html
设置一个定时器多等一下吧。
不光是百度,谷歌也是这样,为了尽快显示首页,页面设计得非常简单,等文档加载完成之后使用定时器再加载一个脚本标签,在脚本文件里通过DOM添加更多的页面内容,这都是加快页面显示速度的技巧。
OnDocumentComplete是在</html>标签处理完毕时就会发出,但是定时器都是在之后执行的,可能永远执行不完。
相关文章推荐
- 在CHtmlView中,判断一个页面加载完成的准确方法
- CHtmlView中,判断一个页面加载完成的准确方法
- 在CHtmlView中,判断一个页面加载完成的准确方法,解决OnDocumentComplete多次调用问题
- 在CHtmlView中,判断一个页面加载完成的准确方法
- 多种方法实现当jsp页面完全加载完成后执行一个js函数
- 多种方法实现当jsp页面完全加载完成后执行一个js函数
- WebBrowser中如何准确判断整个页面完全加载完成
- 页面加载完成后自动执行一个方法函数的JQ、JS方法
- 加载完成一个页面后自动执行一个方法
- 用js实现在加载完成一个页面后自动执行一个方法
- 当jsp页面完全加载完成后执行一个js函数
- 页面加载完成后自动执行一个方法函数的JQ、JS方法
- js中常用方法以及document.readyState 判断页面是否加载完成 complete和interactive
- webbrower判断页面是否加载完成的好方法
- 当jsp页面完全加载完成后执行一个js函数
- 用js实现在加载完成一个页面后自动执行一个方法
- 当jsp页面完全加载完成后执行一个js函数
- 当jsp页面完全加载完成后执行一个js函数
- 当jsp页面完全加载完成后执行一个js函数
- 当jsp页面完全加载完成后执行一个js函数