.Net WebBrowser.DocumentText ändert sich nicht!

Lesezeit: 3 Minuten

Benutzer-Avatar
Joe Morgan

In meinem vb.net-Programm verwende ich einen Webbrowser, um dem Benutzer eine HTML-Vorschau zu zeigen. Ich habe zuvor einen Server aufgerufen, um den HTML-Code abzurufen, bin dann in einem asynchronen Thread zurückgekehrt und habe ein Ereignis ausgelöst, um WebBrowser.DocumentText mit der HTML-Zeichenfolge zu füllen, die ich zurückgegeben habe.

Jetzt habe ich es eingerichtet, um alle Informationen auf dem Client abzurufen, ohne jemals auf den Server zugreifen zu müssen, und ich versuche, dasselbe Ereignis auszulösen. Ich beobachte, wie der Code durchgeht, und es hat die HTML-Zeichenfolge korrekt und alles, aber wenn ich es versuche

browser.DocumentText = _emailHTML

der Inhalt von DocumentText bleibt als “<HTML></HTML>

Ich habe mich nur gefragt, warum der DocumentText nicht festgelegt wurde. Hat jemand Vorschläge?

Benutzer-Avatar
David Mohundro

Versuche Folgendes:

browser.Navigate("about:blank");
HtmlDocument doc = browser.Document;
doc.Write(String.Empty);
browser.DocumentText = _emailHTML;

Ich habe festgestellt, dass die WebBrowser Die Steuerung muss normalerweise initialisiert werden about:blank ohnehin. Dasselbe muss beim Navigieren zu unterschiedlichen Inhaltstypen (wie text/xml zu text/html) erfolgen, da der Renderer unterschiedlich ist (mshtml für text/html, etwas anderes für text/xml).

Siehe auch: C# 2.0 WebBrowser-Steuerelement – ​​Fehler in DocumentText?

  • Ich schätze die Hilfe. Es stellte sich heraus, dass ich es mit browser.Document.OpenNew (True) bekommen konnte. Sie haben Recht – ich musste es initialisieren.

    – Joe Morgan

    6. Oktober 2008 um 14:32 Uhr

  • Warum doc.Write gefolgt von DocumentText = …? Reicht es nicht, einfach ein browser.Document.Write(_emailHTML);

    – Nikodemus RIP

    28. März 2012 um 14:03 Uhr

  • Glauben Sie nicht, dass diese Methode funktioniert, wenn AllowNavigation ist auf false gesetzt.

    – Brad Moore

    30. Januar 2013 um 3:14 Uhr

  • Danke, ich habe stundenlang mit diesem Problem gekämpft … Ich verstehe jedoch nicht, warum die Lösung funktioniert. Könnte erklären, warum doc.Write(…) benötigt wird?

    – Mondwanderer

    6. Februar 2013 um 16:53 Uhr


  • Es ist ein paar Jahre her, seit ich mit dem Browser-Steuerelement gearbeitet habe, aber wenn ich mich richtig erinnere, hing es mit der Initialisierung zusammen … es ist sicherlich nicht ideal, aber es ist auch nicht erforderlich, als Teil der Initialisierung zu about:blank zu navigieren . Ich würde empfehlen, eine Methode namens “InitializeWebBrowser” oder so etwas zu erstellen, damit die Absicht klar ist.

    – David Mohundro

    6. Februar 2013 um 17:27 Uhr

Ich habe folgendes gefunden und es hat funktioniert!

    webBrowser.Navigate("about:blank");
    webBrowser.Document.OpenNew(false);
    webBrowser.Document.Write(html);
    webBrowser.Refresh();

  • Dies ist diejenige, die für mich funktioniert hat. Das einzige, was mir gefehlt hat, war die Auffrischung.

    – Matt Winward

    26. Juli 2013 um 10:34 Uhr

  • Funktioniert wie ein Zauber … sogar mit AllowNav = false

    – Danny Fallas

    18. März 2016 um 23:02 Uhr

  • Leider wird dies die nicht erhöhen DocumentCompleted Veranstaltung.

    –Robert S.

    30. November 2016 um 9:35 Uhr

Ich fand den besten Weg, damit umzugehen, ist wie folgt:

if (this.webBrowser1.Document == null)
{
    this.webBrowser1.DocumentText = htmlSource;
}
else
{
    this.webBrowser1.Document.OpenNew(true);
    this.webBrowser1.Document.Write(htmlSource);
}

  • Denken Sie daran, Refresh() in den Else-Block zu setzen.

    – DonnerGr

    19. Mai 2014 um 10:51 Uhr

Das hat bei mir funktioniert:

webBrowser.Navigate("about:blank");
webBrowser.Document?.Write(htmlString);

Benutzer-Avatar
Antgraf

Achten Sie darauf, dass Sie nicht kündigen Navigieren Veranstaltung von Webbrowser zum über: leer Seite. Webbrowser navigiert zu über: leer vor dem Einstellen DokumentText. Wenn Sie also Links selbst handhaben möchten, müssen Sie den folgenden Handler von erstellen Navigieren Veranstaltung:

private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
    if(e.Url.OriginalString.StartsWith("about:"))
    {
        return;
    }
    e.Cancel = true;
    // ...
}

Benutzer-Avatar
johnc

Ich habe dies gerade in einigen unserer alten Codes entdeckt.

_webBrowser.DocumentText = builder.WriteToString( ... );

Application.DoEvents();

Anscheinend kickt ein DoEvents auch den Browser ins Rendern

Benutzer-Avatar
Gemeinschaft

Bitte beziehen Sie sich auf diese Antwort c # filenotfoundexception im Webbrowser?

1214410cookie-check.Net WebBrowser.DocumentText ändert sich nicht!

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy