2012-03-26 9 views
5

Tengo Windows .Net Form que contiene un control WebBrowser.
Este WebBrowser muestra una página web basada en su propiedad Url.
¿Puedo modificar el DOM de la página mostrada dentro del control WebBrowser?
En caso afirmativo, ¿cómo?¿Cómo actualizar el contenido DOM dentro del control WebBrowser en C#?

+1

Es posible. Se supone que WebBrowser tiene una propiedad llamada Document que le permite acceder al html a través de htmldocument en el código administrado (http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.aspx) – MilkyWayJoe

+1

Aquí está el enlace a esa propiedad específica que mencioné http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.document.aspx – MilkyWayJoe

+1

¿Es de solo lectura (ya que veo que solo contiene un getter)? –

Respuesta

8

Para aquellos que estén interesados, aquí está la solución:

HtmlElement headElement = webBrowser1.Document.GetElementsByTagName("head")[0]; 
HtmlElement scriptElement = webBrowser1.Document.CreateElement("script"); 
IHTMLScriptElement domScriptElement = (IHTMLScriptElement)scriptElement.DomElement; 
domScriptElement.text = "function applyChanges(){/*DO WHATEVER YOU WANT HERE*/}"; 
headElement.AppendChild(scriptElement); 

// Call the nextline whenever you want to execute your code 
webBrowser1.Document.InvokeScript("applyChanges"); 
+1

¡Buen trabajo publicar su solución aquí! Gracias – viniciushana

2

De http://msdn.microsoft.com/pt-br/library/system.windows.forms.webbrowser.aspx:

También puede manipular el contenido de una página Web a través de la propiedad de documento, que contiene un objeto HtmlDocument que proporciona un acceso controlado al modelo de documento HTML objeto (DOM) de la página actual . Esta propiedad es útil, cuando se usa en combinación con la propiedad ObjectForScripting, para implementar comunicación bidireccional entre el código de su aplicación y el código HTML dinámico (DHTML) en una página web, permitiéndole combinar controles basados ​​en Web y controles de Windows Forms en un solo interfaz de usuario. Puede usar la propiedad Documento para llamar a los métodos de código de scripting desde su aplicación. Su código de secuencia de comandos puede acceder a su aplicación a través del objeto window.external, que es un objeto DOM incorporado para el acceso de host, y que se asigna al objeto que especifique para la propiedad ObjectForScripting.

+0

¿Podría aclarar su punto con un ejemplo? – Aakash

+0

Al final del enlace, encontrarás algunos ejemplos. – viniciushana

Cuestiones relacionadas