• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
张纯睿
博客园    首页    新随笔    联系   管理    订阅  订阅

判断一个页面加载完全完成的准确方法

 

!!http://www.codeproject.com/Articles/4411/IEHelper-Internet-Explorer-Helper-Class

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>标签处理完毕时就会发出,但是定时器都是在之后执行的,可能永远执行不完。

posted @ 2014-01-24 12:08  张纯睿  阅读(442)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3