Condividi tramite


Come accedere al codice sorgente HTML nel modello a oggetti documento HTML gestito

Le proprietà DocumentStream e DocumentText sul controllo WebBrowser restituiscono il codice HTML del documento corrente così come esisteva quando è stato visualizzato per la prima volta. Tuttavia, se si modifica la pagina usando chiamate di metodo e proprietà, ad esempio AppendChild e InnerHtml, queste modifiche non verranno visualizzate quando si chiama DocumentStream e DocumentText. Per ottenere l'origine HTML più up-to-date per il DOM, è necessario chiamare la proprietà OuterHtml sull'elemento HTML.

La procedura seguente illustra come recuperare l'origine dinamica e visualizzarla in un menu di scelta rapida separato.

Recupero della sorgente dinamica con la proprietà OuterHtml

  1. Creare una nuova applicazione Windows Form. Iniziare con un singolo Forme chiamarlo Form1.

  2. Ospitare il controllo WebBrowser nell'applicazione Windows Forms e denominarlo WebBrowser1. Per altre informazioni, vedere Procedura: Aggiungere funzionalità del Web browser a un'applicazione Windows Form.

  3. Creare una seconda Form nell'applicazione chiamata CodeForm.

  4. Aggiungere un controllo RichTextBox a CodeForm e impostarne la proprietà Dock su Fill.

  5. Creare una proprietà pubblica in CodeForm denominata Code.

    public string Code
    {
        get
        {
            if (richTextBox1.Text != null)
            {
                return (richTextBox1.Text);
            }
            else
            {
                return ("");
            }
        }
        set
        {
            richTextBox1.Text = value;
        }
    }
    
    Public Property Code() As String
        Get
            If (RichTextBox1.Text IsNot Nothing) Then
                Code = RichTextBox1.Text
            Else
                Code = ""
            End If
        End Get
    
        Set(ByVal value As String)
            RichTextBox1.Text = value
        End Set
    End Property
    
  6. Aggiungi un controllo Button chiamato Button1 al tuo Forme monitora l'evento Click. Per informazioni dettagliate sul monitoraggio degli eventi, vedere Eventi.

  7. Aggiungere il codice seguente al gestore eventi Click.

    private void button1_Click(object sender, EventArgs e)
    {
        HtmlElement elem;
    
        if (webBrowser1.Document != null)
        {
            CodeForm cf = new CodeForm();
            HtmlElementCollection elems = webBrowser1.Document.GetElementsByTagName("HTML");
            if (elems.Count == 1)
            {
                elem = elems[0];
                cf.Code = elem.OuterHtml;
                cf.Show();
            }
        }
    }
    
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim elem As HtmlElement
    
        If (WebBrowser1.Document IsNot Nothing) Then
            Dim cf As New CodeForm()
            Dim elems As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("HTML")
            If (elems.Count = 1) Then
                elem = elems(0)
                cf.Code = elem.OuterHtml
                cf.Show()
            End If
        End If
    End Sub
    

Programmazione affidabile

Testare sempre il valore di Document prima di tentare di recuperarlo. Se il caricamento della pagina corrente non viene completato, Document o uno o più degli oggetti figlio potrebbero non essere inizializzati.

Vedere anche