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
Creare una nuova applicazione Windows Form. Iniziare con un singolo Forme chiamarlo
Form1
.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.Creare una seconda Form nell'applicazione chiamata
CodeForm
.Aggiungere un controllo RichTextBox a
CodeForm
e impostarne la proprietà Dock suFill
.Creare una proprietà pubblica in
CodeForm
denominataCode
.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
Aggiungi un controllo Button chiamato
Button1
al tuo Forme monitora l'evento Click. Per informazioni dettagliate sul monitoraggio degli eventi, vedere Eventi.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
.NET Desktop feedback