Procedura: accedere all'origine HTML nel Document Object Model HTML gestito

Le proprietà DocumentStream r DocumentText del controllo WebBrowser restituiscono l'HTML del documento corrente come si presentava al momento della visualizzazione iniziale. Se tuttavia si modifica la pagina con chiamate a metodo e proprietà, ad esempio AppendChild e InnerHtml, queste modifiche non saranno visualizzate quando si chiama DocumentStream e DocumentText. Per ottenere l'origine HTML più recente del DOM, è necessario chiamare la proprietà OuterHtml sull'elemento HTML.

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

Recupero dell'origine dinamica con la proprietà OuterHtml

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

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

  3. Creare un secondo Form nell'applicazione denominata CodeForm.

  4. Aggiungere un RichTextBox controllo a CodeForm e impostarne la Dock proprietà 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. Aggiungere un Button controllo denominato Button1 all'oggetto Forme monitorare 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 efficiente

Verificare sempre il valore di Document prima di tentarne il recupero. Se il caricamento della pagina corrente non viene completato, è possibile che l'inizializzazione di Document o di uno o più dei relativi oggetti figlio non sia eseguita.

Vedi anche