2010-11-10 28 views
5

¿Cómo se lee el código html de IFRAME con WebBrowser?Lea el código HTML de iframe con Webbrowser C#

Tengo un sitio con iframe, y después de unos pocos clics se abre una nueva URL dentro de este IFRAME con una parte del código HTML. ¿Hay alguna posibilidad de leer esto? Cuando intento navegar() a esta URL, me redireccionan a la página principal de este sitio (no es posible abrir este enlace dos veces).

Uri IFRAME_URL = webBrowser1.Document.Window.Frames[0].Url; 

tal vez hay algo similar a:

Uri IFRAME_URL = webBrowser1.Document.Window.Frames[0]. ... DOCUMENTTEXT; 
+1

@Kiquenet ver esta respuesta http://stackoverflow.com/questions/20013498/webbrowser-iframe-access-causing-unauthorized-access/20494120#20494120 –

Respuesta

3

Probar:

string content = webBrowser1.Document.Window.Frames[0].WindowFrameElement.InnerText; 
+0

string content = webBrowser1.Document.Window.Frames [0]. WindowFrameElement.InnerText; – Luke

+0

Utilicé esto y el contenido que se muestra. Recibí la URL de iframe ;-) – Luke

+0

Ah, lo siento, quise decir "contenido" como variable. En lugar de código HTML (fuente), recibí la URL de mi iframe. ¡Pero gracias de cualquier manera! – Luke

1

También puede adquirir diversos artículos a través de tipos MSHTML:

establecer una referencia a la " Microsoft HTML Object Library "en referencias COM.

Fije su instrucción using:

using mshtml; 

A continuación, pulsa en el API mshtml arrebatar la fuente:

HTMLFrameBase frame = yourWebBrowserControl.Document.GetElementById("yourFrameId").DomElement as HTMLFrameBase; 

Si "marco" no es nulo después de esa línea, que tiene mucho de artículos que cuelgan para su uso.

+0

Lo intento pero obtengo el error UnauthorizedAccessException – Kiquenet

+0

Esto se debe a las restricciones que restringen el acceso entre fotogramas para eludir los ataques de scripts entre sitios. – Boydski

1

intento:

contenido de la cadena = webBrowser1.Document.Window.Frames [0] .Document.Body.InnerText

ventana
+1

Lo intento pero recibo el error UnauthorizedAccessException – Kiquenet

0

un control WebBrowser puede contener más de un iframe y .NET admite marco de la colección tan ¿por qué no usar algo como esto:

// Setup a string variable... 
string html = string.Empty; 

// webBrowser1.Document.Window.Frames gets a collection of iframes contained in the current document... 
// HTMLWindow is the iterator for the Collection... 
foreach (HtmlWindow frame in webBrowser1.Document.Window.Frames) 
{ 
html += frame.Document.Body.OuterHtml; 
} 

de esta manera, tal vez con un pequeño ajuste puede obtener todo lo que necesita de los contenedores de iframe que necesita.

Cuestiones relacionadas