.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 )
por favor refiérase a esta respuesta c # filenotfoundexception en webbrowser?
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;
}