2010-11-10 15 views
5

Comment lire le code html IFRAME à l'aide de WebBrowser?Lecture de code HTML à partir d'iframe à l'aide de Webbrowser C#

J'ai un site avec iframe, et après quelques clics, une nouvelle URL s'ouvre à l'intérieur de cette IFRAME avec une partie du code HTML. Est-il possible de lire ceci? Lorsque j'essaie de naviguer() vers cette URL, je suis redirigé vers la page principale de ce site (il n'est pas possible d'ouvrir ce lien deux fois).

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

Peut-être il y a quelque chose de similaire à:

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

@Kiquenet voir cette réponse http://stackoverflow.com/questions/20013498/webbrowser-iframe-access-causing-unauthorized-access/20494120#20494120 –

Répondre

3

Essayez:

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

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

+0

J'ai utilisé ceci et affiché le contenu. J'ai reçu l'URL de iframe ;-) – Luke

+0

Ah, désolé, je voulais dire "contenu" comme variable. Au lieu du code HTML (source) j'ai reçu l'URL de mon iframe. Mais merci quand même! – Luke

1

Vous pouvez également acquérir divers articles par types MSHTML:

Définir une référence à la " Microsoft HTML Object Library "sous références COM.

Définissez votre déclaration en utilisant:

using mshtml; 

Puis tapez dans l'API mshtml pour arracher la source:

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

Si "frame" est non nul après cette ligne, il a beaucoup d'éléments qui pendent pour votre usage.

+0

Je l'essaie mais j'obtiens l'erreur UnauthorizedAccessException – Kiquenet

+0

C'est à cause des contraintes limitant l'accès entre les cadres pour contourner les attaques de script inter-site. – Boydski

1

essai:

contenu de la chaîne

= webBrowser1.Document.Window.Frames [0] .Document.Body.InnerText

+1

Je l'ai essayé mais j'ai une erreur UnauthorizedAccessException – Kiquenet

0

Une fenêtre de contrôle du navigateur Web peut contenir plus d'un iframe et .NET prend en charge la collecte de cadre de manière à pourquoi ne pas utiliser quelque chose comme ceci:

// 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 cette façon, peut-être avec un petit ajustement, vous pouvez obtenir tout ce que vous avez besoin des conteneurs iFrame dont vous avez besoin.