Al momento sei offline in attesa che la connessione Internet venga ristabilita

Come determinare quando una pagina è eseguita il caricamento nel controllo WebBrowser

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 180366
Dichiarazione di non responsabilità per articoli della Microsoft Knowledge Base su prodotti non più supportati
Questo articolo è stato scritto sui prodotti per cui Microsoft non offre più supporto. L’articolo, quindi, viene offerto ‘così come è’ e non verrà più aggiornato.
Sommario
Il controllo di WebBrowser di Internet Explorer genera l'evento DocumentComplete termine una pagina Web di download. È possibile creare una funzione del gestore eventi nell'applicazione per l'evento. Questo articolo viene descritta la procedura per determinare se un termine del controllo WebBrowser download di una pagina Web.
Informazioni
Il controllo di WebBrowser genera l'evento DocumentComplete quando la proprietà ReadyState viene modificata per READYSTATE_COMPLETE. Questo indica che è stata completata la pagina Web di download del controllo WebBrowser. Ecco alcuni punti importanti relative a questo evento:
  • Nel caso di una pagina con frame non DocumentComplete viene generato una volta dopo tutti gli elementi.
  • In caso di più frame, DocumentComplete ottiene generato più volte. Non tutti i frame genera questo evento, ma ogni frame che viene generato un evento DownloadBegin viene generato un evento DocumentComplete corrispondente.
  • L'evento DocumentComplete ha un parametro IDispatch *, ovvero della cornice (shdocvw) per il quale viene generato DocumentComplete IDispatch.
  • La cornice di primo livello viene generato il DocumentComplete alla fine. In tal caso, per verificare se viene eseguita una pagina Download, è necessario verificare se il parametro IDispatch * è come IDispatch del controllo WebBrowser.

    Per Visual Basic, è qui un codice che esegue questo controllo:
    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					
Per gestire l'evento DocumentComplete in Visual c ++ e determinare se il download della pagina Web è completato, attenersi alla seguente procedura.

Si noti che i passaggi dipendono la modalità di che utilizzo del controllo WebBrowser.
  • Se si sta creando il controllo WebBrowser in un oggetto CWnd/CView, è necessario seguire i passaggi da 1 a 4.
  • Se si sta creando il controllo WebBrowser in un oggetto CDialog/CFormView, sufficiente eseguire il passaggio 4.
  • Se si utilizza la classe CHtmlView fornita con Visual c ++ 6.0, eseguire l'override CHtmlView::DocumentComplete() e seguire di passaggio 4, utilizzando il membro di m_pBrowserApp della classe CHtmlView per accedere al controllo WebBrowser.
  1. Definire il metodo di OnDocumentComplete nel file di intestazione per la classe derivata CWnd/CView:
    afx_msg void OnDocumentComplete(LPDISPATCH lpDisp,                                VARIANT FAR* URL);					
  2. Dichiarare il sink di evento nello stesso file di intestazione:
    DECLARE_EVENTSINK_MAP()					
  3. Nel file di implementazione (CPP) per la classe derivata CWnd/CView, implementare il mappa del sink di eventi:
    BEGIN_EVENTSINK_MAP(CYourView, CView)   ON_EVENT(CWBTstView, ID_WEB_BROWSE, 259 /* DocumentComplete */,            OnDocumentComplete, VTS_DISPATCH VTS_PVARIANT)END_EVENTSINK_MAP()					
  4. Implementare il metodo 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();}					
Questo approccio funziona quando il controllo WebBrowser passa a una pagina che viene modificato il frame principale. Ad esempio se si verifica lo spostamento all'interno di un frame stesso, quindi il DocumentComplete finale generato è la cornice e non nel frame principale. Si consideri ad esempio, nello scenario riportato di seguito.

Il controllo WebBrowser sta ospitando una pagina con frame. All'interno di un frame della pagina con frame, l'utente fa clic su un collegamento che viene visualizzata una nuova pagina nel frame stesso e mantiene intatti il resto della pagina con frame. La nuova pagina potrebbe contenere più frame nuovamente. In questo modo, sarà necessario più notifiche DocumentComplete (uno per ogni nuovo frame). Ma, poiché non è modificata la cornice di primo livello, il DocumentComplete finale sarebbe che del frame che è stato modificato.

Se si desidera verificare per il documento finale completo in questo scenario, è Impossibile effettuare le seguenti operazioni:
Verificare se il parametro di IDispatch del DocumentComplete è lo stesso parametro di primo evento NavigateComplete2 IDispatch. Poiché il primo NavigateComplete2 è della cornice di primo livello e l'ultima DocumentComplete è anche della cornice di primo livello, eseguire un confronto in un modo indicherà se viene eseguita la pagina Download.
Qui è del codice di c ++ di esempio:
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

Warning: This article has been translated automatically

Proprietà

ID articolo: 180366 - Ultima revisione: 07/01/2004 16:33:16 - Revisione: 2.1

Microsoft Internet Explorer 4.0 128-Bit Edition, Microsoft Internet Explorer 4.01 Service Pack 2, Microsoft Internet Explorer 5.0, Microsoft Internet Explorer 5.5

  • kbmt kbhowto KB180366 KbMtit
Feedback