net .net html browser

.Net WebBrowser.DocumentText no está cambiando!



blazor net core (9)

¡Encontré lo siguiente y funcionó!

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

En mi programa vb.net, estoy usando un navegador web para mostrar al usuario una vista previa HTML. Anteriormente estaba presionando un servidor para tomar el HTML, luego volviendo a un hilo asincrónico y generando un evento para llenar el WebBrowser.DocumentText con la cadena HTML que estaba devolviendo.

Ahora lo configuré para capturar toda la información del cliente, sin tener que golpear el servidor, y estoy tratando de plantear el mismo evento. Miro cómo funciona el código, y tiene la cadena HTML correcta y todo, pero cuando intento hacerlo

browser.DocumentText = _emailHTML

los contenidos de DocumentText permanecen como " <HTML></HTML> "

Me preguntaba por qué DocumentText no se estaba configurando. ¿Alguien tiene alguna sugerencia?


Acabo de ver esto en algunos de nuestros viejos códigos.

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

Al parecer, un DoEvents también activa el navegador en la representación


Asegúrese de no cancelar el evento Navegación de WebBrowser para obtener información sobre: página en blanco . WebBrowser navega a aproximadamente: en blanco antes de establecer DocumentText . Por lo tanto, si desea manejar los enlaces usted mismo, debe crear el siguiente controlador del evento Navegación :

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


Encontré la mejor manera de manejar esto, es la siguiente:

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


Eso funcionó para mí:

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


Mientras Application.DoEvents() arregla en un proyecto de WinForms, era irrelevante en un proyecto de WPF.

Finalmente conseguí que funcionara usando webBrowser.Write( htmlContent ) (en lugar de webBrowser.DocumentText = htmlContent ).


Pruebe lo siguiente:

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

Descubrí que, por lo general, el control WebBrowser necesita ser inicializado about:blank todos modos. Lo mismo debe hacerse entre navega a diferentes tipos de contenido (como texto / xml a texto / html) porque el procesador es diferente (mshtml para texto / html, algo más para texto / xml).

(a través de http://geekswithblogs.net/paulwhitblog/archive/2005/12/12/62961.aspx )



Esto siempre funciona

using mshtml; private IHTMLDocument2 Document { get { if (Browser.Document != null) { return Browser.Document.DomDocument as IHTMLDocument2; } return null; } } if (Document == null) { Browser.DocumentText = Contents; } else { Document.body.innerHTML = Contents; }