Comment : accéder à la source HTML dans le modèle objet de document HTML managé

Mise à jour : novembre 2007

Les propriétés DocumentStream et DocumentText du contrôle WebBrowser retournent le code HTML du document actuel tel qu'il était 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'apparaîtront pas lorsque vous appellerez DocumentStream et DocumentText. Pour obtenir la source HTML la plus récente pour le modèle DOM, vous devez appeler la propriété OuterHtml pour l'élément HTML.

La procédure suivante indique comment récupérer la source dynamique et l'afficher dans un menu contextuel séparé.

Récupération de la source dynamique à l'aide de la propriété OuterHtml

  1. Créez une nouvelle application Windows Forms. Démarrez avec un formulaire Form unique et appelez-le Form1.

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

  3. Créez un deuxième formulaire Form dans votre application et appelez-le CodeForm.

  4. Ajoutez un contrôle RichTextBox à CodeForm et affectez à la propriété Dock la valeur Fill.

  5. Créez une propriété publique pour CodeForm que vous appellerez Code.

    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
    
         public string Code
            {
                get
                {
                    if (richTextBox1.Text != null)
                    {
                        return (richTextBox1.Text);
                    }
                    else
                    {
                        return ("");
                    }
                }
                set
                {
                    richTextBox1.Text = value;
                }
            }
    
  6. Ajoutez un contrôle Button nommé Button1 à votre formulaire Form et surveillez l'événement Click. Pour plus d'informations sur la surveillance d'événements, consultez Consommation d'événements.

  7. Ajoutez le code suivant au gestionnaire d'événements Click :

    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
    
         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();
                    }
                }
            }
    

Programmation fiable

Testez systématiquement la valeur de Document avant de tenter de le récupérer. Si le chargement de la page actuelle n'est pas terminé, il est impossible d'initialiser Document ou certains de ses objets enfants.

Voir aussi

Référence

Vue d'ensemble du contrôle WebBrowser

Autres ressources

Utilisation du modèle objet de document HTML managé