2010-08-12 5 views
1

C# Visual Studio 2010Rafraîchissant iFrame dans un contrôle navigateur Web

J'ai une page web complexe qui contient plusieurs iframes que je suis chargement dans un contrôle de navigateur Web. J'essaie de trouver un moyen d'actualiser l'une des iframes lorsqu'un utilisateur clique sur un bouton dans le formulaire Windows.

Je ne trouve rien de spécifique à l'actualisation d'une seule iframe. Des idées?

Répondre

2

À partir de l'DOM, vous pouvez simplement invoquer:

document.getElementById([FrameID]).contentDocument.location.reload(true); 

Utilisation du contrôle WebBrowser, vous pouvez exécuter vous-même javascript, en utilisant la méthode InvokeScript du document:

browser.Document.InvokeScript([FunctionName], [Parameters]); 

Mettre ces deux concepts ensemble en écrivant votre propre fonction dans la page parent:

function reloadFrame(frameId) { 
    document.getElementById(frameId).contentDocument.location.reload(true); 
} 

A e invoquer dans votre code C#:

browser.Document.InvokeScript("reloadFrame", new[] { "myFrameId" }); 
+0

Je suis un peu brumeux sur la façon dont cela fonctionnerait. Je n'ai aucun contrôle sur la page Web qui est chargée dans le contrôle du navigateur Web. Il semble que la fonction javascript reloadFrame doive être ajoutée à la page pour que cette solution fonctionne. Est-ce correct? – Josh

+0

C'était ce que je voulais dire, oui. Je pensais que vous avez le contrôle sur la page avec l'iframe. Désolé n'a pas pu aider. –

+0

Pas de soucis, j'apprécie les pensées - Quelqu'un d'autre a des idées? – Josh

1

Comment l'utilisation MSHTML et la méthode reload de l'interface IHTMLLocation. Vous ajoutez une référence à Microsoft.mshtml puis essayer:

IHTMLDocument2 doc = webBrowser1.Document.Window.Frames["MyIFrame"].Document.DomDocument as IHTMLDocument2; 
IHTMLLocation location = doc.location as IHTMLLocation; 

if (location != null) 
    location.reload(true); 

Une valeur de true recharge la page du serveur, alors que false il récupère à partir du cache.

+0

Je reçois une exception UnauthorizedAccessException sur la première ligne. "L'accès est refusé." Qu'est-ce qui me manque pour avoir accès à cette partie du DOM? – Boydski

+0

Je vois qu'il y a des problèmes de script cross frame concernant la sécurité. Y a-t-il un moyen de contourner ceci? Je veux juste recharger le cadre. – Boydski

Questions connexes