zoukankan      html  css  js  c++  java
  • 判断一个页面加载完全完成的准确方法

    !!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(“页面加载完成! 进入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>标签处理完毕时就会发出,但是定时器都是在之后执行的,可能永远执行不完。

  • 相关阅读:
    [noip2010]关押罪犯 并查集
    双栈排序 noip2008
    欧拉函数
    中国剩余定理(孙子定理)
    求组合数
    线性素数筛
    洛谷 P2661 信息传递
    图的最短路
    Mzc和男家丁的游戏
    最佳旅游线路
  • 原文地址:https://www.cnblogs.com/carl2380/p/3532257.html
Copyright © 2011-2022 走看看