刷新Web浏览器控件中的iFrame

问题描述:

C#Visual Studio 2010刷新Web浏览器控件中的iFrame

我有一个复杂的网页,其中包含几个加载到Web浏览器控件中的iframe。我试图找出一种方法来刷新其中一个iframe,当用户单击窗体上的一个按钮时。

我找不到任何具体的刷新单个iframe。有任何想法吗?

从DOM中,你可以调用:

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

使用WebBrowser控件,您可以执行JavaScript的自己,通过使用文件的InvokeScript方法:

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

把这两个通过在父页面中编写自己的功能一起构思概念:

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

A第二在C#代码中调用此:

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

我对这是如何工作有点模糊。我无法控制正在加载到Web浏览器控件的网页。这听起来像reloadFrame JavaScript函数将需要被添加到页面,以使此解决方案可以工作。它是否正确? – Josh 2010-08-13 15:53:35

+0

这就是我的意思,是的。以为你可以通过iframe控制页面。抱歉没有帮助。 – 2010-08-13 16:08:59

+0

不用担心,我欣赏这些想法 - 任何人都有什么想法? – Josh 2010-08-13 16:39:39

如何使用MSHTMLIHTMLLocation接口的reload方法。你会添加引用Microsoft.mshtml然后尝试:

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

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

true重新加载页面从服务器的值,而false从缓存中检索它。

+0

我在第一行收到UnauthorizedAccessException。 “访问被拒绝。”我缺少什么来访问DOM的那部分? – Boydski 2010-11-30 03:34:56

+0

我看到有关于安全性的跨框架脚本问题。有没有解决的办法?我只是想重新加载框架。 – Boydski 2010-12-01 01:19:41