Partager via


Guide pratique pour accéder à la source HTML dans le modèle objet document HTML managé

Les propriétés DocumentStream et DocumentText sur le contrôle WebBrowser retournent le code HTML du document actif tel qu’il existait lors de son premier affichage. Toutefois, si vous modifiez la page à l’aide d’appels de méthode et de propriété tels que AppendChild et InnerHtml, ces modifications n’apparaissent pas lorsque vous appelez DocumentStream et DocumentText. Pour obtenir le code source HTML le plus à jour pour le modèle DOM, vous devez appeler la propriété OuterHtml sur l'élément HTML.

La procédure suivante montre comment récupérer la source dynamique et l’afficher dans un menu contextuel distinct.

Récupération de la source dynamique avec la propriété OuterHtml

  1. Créez une application Windows Forms. Commencez par un seul Formet appelez-le Form1.

  2. Hébergez le contrôle WebBrowser dans votre application Windows Forms et nommez-le WebBrowser1. Pour obtenir plus d'informations, consultez Comment ajouter des fonctionnalités de navigateur Web à une application Windows Forms.

  3. Créez une deuxième Form dans votre application appelée CodeForm.

  4. Ajoutez un contrôle RichTextBox à CodeForm et définissez sa propriété Dock sur Fill.

  5. Créez une propriété publique sur CodeForm appelée 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. Ajoutez un contrôle Button nommé Button1 à votre Form et surveillez l’événement Click. Pour plus d’informations sur la surveillance des événements, consultez Événements.

  7. Ajoutez le code suivant au gestionnaire d’événements 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
    

Programmation robuste

Testez toujours la valeur de Document avant de tenter de la récupérer. Si le chargement de la page active n'est pas terminé, l'initialisation de Document ou de ses objets enfants peut éventuellement ne pas se produire.

Voir aussi