Teď jste offline a čekáte, až se znova připojí internet.

Jak lze zjistit na stránce při dokončení načítání do ovládacího prvku WebBrowser

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

Projděte si také anglickou verzi článku:180366
Právní omezení pro obsah znalostní báze týkající se produktů, jejichž podpora byla ukončena
Tento článek byl napsán o produktech, pro které společnost Microsoft již neposkytuje nadále podporu. Článek je tedy nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Souhrn
Ovládací prvek Internet Explorer WebBrowser dojde k události DocumentCompletePo dokončení stahování webové stránky. Můžete vytvořit obslužnou rutinu událostifunkce v aplikaci pro tuto událost. Tento článek popisuje,Postup při určování, zda ovládací prvek WebBrowser je dokončena.stahování webové stránky.
Další informace
Ovládací prvek WebBrowser dojde k události DocumentComplete při jeho ReadyStateVlastnost se změní na READYSTATE_COMPLETE. To znamená, žeOvládací prvek WebBrowser dokončil stahování webové stránky. Zde jsou některédůležité body týkající se této události:
  • V souvislosti bez rámců na stránce DocumentComplete je aktivována jednou poté, co všechno je Hotovo.
  • V případě z více snímků získá DocumentComplete aktivována vícekrát. Ne každý snímek dojde k této události, ale každý snímek, který je Odpovídající události DocumentComplete dojde k události DownloadBegin.
  • Událost DocumentComplete má IDispatch * parametr, který je Chcete-li rozhraní IDispatch rámce (shdocvw), pro které je aktivována, DocumentComplete.
  • Rámec nejvyšší úrovně je DocumentComplete do konce. Ano, Kontrola, pokud se provádí na stránce stažení, potřebujete-li Rozhraní IDispatch * parametr je stejné jako rozhraní IDispatch ovládacího prvku WebBrowser.

    V jazyce Visual Basic zde je kód, který provede kontrola:
    Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object,                                         URL As Variant)   If (pDisp Is WebBrowser1.Object) Then      Debug.Print "Web document is finished downloading"   End IfEnd Sub					
Ke zpracování události DocumentComplete v jazyce C++ a zjistit, zdaPo dokončení stahování webové stránky, postupujte následujícím způsobem.

Všimněte si, že budete postupovat podle kroků závisí na způsobu, jakým používáte ovládací prvek WebBrowser.
  • Pokud vytvoříte ovládací prvek WebBrowser v objektu CWnd a CView, kterépostupujte podle kroků 1 až 4.
  • Pokud vytvoříte ovládací prvek WebBrowser v objektu CDialog a CFormView,Stačí postupovat podle kroku 4.
  • Používáte-li třída CHtmlView s Visual C++ 6.0přepsat CHtmlView::DocumentComplete() a postupujte podle kroku 4, použitíčlen m_pBrowserApp třídy CHtmlView přístup k ovládacím prvku WebBrowser.
  1. V záhlaví souboru CWnd, CView odvozené třídy definujte metodu OnDocumentComplete:
    afx_msg void OnDocumentComplete(LPDISPATCH lpDisp,                                VARIANT FAR* URL);					
  2. Prohlašuji, že jímky událostí ve stejném souboru záhlaví:
    DECLARE_EVENTSINK_MAP()					
  3. V implementačním souboru (CPP) CWnd, CView odvozené třídy, implementovat mapa jímky událostí:
    BEGIN_EVENTSINK_MAP(CYourView, CView)   ON_EVENT(CWBTstView, ID_WEB_BROWSE, 259 /* DocumentComplete */,            OnDocumentComplete, VTS_DISPATCH VTS_PVARIANT)END_EVENTSINK_MAP()					
  4. Implementace metody OnDocumentComplete:
    void CWBTstView::OnDocumentComplete(LPDISPATCH lpDisp,                                    VARIANT FAR* URL){   IUnknown*  pUnk;   LPDISPATCH lpWBDisp;   HRESULT    hr;   pUnk = m_webBrowser.GetControlUnknown();   ASSERT(pUnk);   hr = pUnk->QueryInterface(IID_IDispatch, (void**)&lpWBDisp);   ASSERT(SUCCEEDED(hr));   if (lpDisp == lpWBDisp )   {      // Top-level Window object, so document has been loaded      TRACE("Web document is finished downloading\n");   }  lpWBDisp->Release();}					
Tento postup je vhodný v případě, že ovládací prvek WebBrowser přejde na stránku,změní rámec nejvyšší úrovně. Řekněte, pokud dojde k navigaci v rámcisám pak konečný DocumentComplete, která je aktivována, je, že rámcea není rámec nejvyšší úrovně. Například zvažte následující scénář.

Ovládací prvek WebBrowser je hostitelem rámců. V rámci jednoho snímkuSada rámců, uživatel klepne na odkaz, který otevře novou stránku v rámcisamotné a ponechá beze změny zbývající sady rámců. Nové stránky nelzeznovu obsahují více rámců. Proto bude existovat více DocumentCompleteoznámení (jeden pro každý nový snímek). Ale protože má rámec nejvyšší úrovněnezmění, konečný DocumentComplete by že rámce, který mázměnit.

Pokud máte zájem o kontrole konečném dokončení v tomto dokumentuscénář, může postupovat takto:
Zkontrolovat, zda parametr IDispatch DocumentComplete je stejná jako Parametr IDispatch první událost NavigateComplete2. Protože první NavigateComplete2 je rámec nejvyšší úrovně a poslední DocumentComplete také nejvyšší úrovně rámce, dělá srovnání takovým způsobem, bude informovat, zda se provádí na stránce stažení.
Zde je ukázkový kód jazyka C++:
LPDISPATCH glpDisp = NULL; // global LPDISPATCH, can also                           // be of class scope// NavigateComplete2 eventvoid CWebbrDlg::OnNavigateComplete2Explorer1(LPDISPATCH pDisp,                                             VARIANT FAR* URL){   // Check if glpDisp is NULL. If NULL, that means it is   // the top level NavigateComplete2. Save the LPDISPATCH   if (!glpDisp)      glpDisp = pDisp;}void CWebbrDlg::OnDocumentCompleteExplorer1(LPDISPATCH pDisp,                                            VARIANT FAR* URL){   if (glpDisp && glpDisp == pDisp)   {      // if the LPDISPATCH are same, that means      // it is the final DocumentComplete. Reset glpDisp      TRACE("Document is done downloading");      glpDisp = NULL;   }}				
DocumentComplete

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 180366 - Poslední kontrola: 04/23/2011 13:29:00 - Revize: 4.0

  • kbhowto kbmt KB180366 KbMtcs
Váš názor
>l>