Iframe标记未加载到Windows窗体的Web浏览器控件中



我开发了一个windows窗体应用程序,在其中添加了一个Web浏览器控件。在那个web浏览器控件中,我添加了类似下面的html内容

<iframe src="pageURL.aspx?ref=iframe" allowtransparency="true" height="310px" width="300px" border="0px" frameBorder="0" scrolling="no" style="overflow-x:hidden;"/>

要将以上内容分配给网络浏览器,我正在使用以下代码

wbflyout.Navigate("about:blank");
wbflyout.DocumentText = string.Empty;
wbflyout.Document.OpenNew(true);
wbflyout.Document.Write(dynamic HTML Content);
wbflyout.Refresh();

我尝试将此内容分配给Web浏览器主体,如下所示-

wbflyout.Document.Body.InnerHtml = (dynamic HTML Content);

当表单加载时,会显示一个空白的白色屏幕。

为什么会发生这种情况?如果我只动态加载简单的标题或文本,效果会更好。

我会尝试同时回答刷新和操作,因为我认为这就是你想要的信息。

刷新:若要刷新,请尝试使用WebBrowser控件上的DocumentText属性。

当您想要操作使用字符串在WebBrowser控件中显示的HTML页面加工工具。例如,您可以使用此属性来加载数据库中的页面或使用正则表达式分析页面。设置此属性时,WebBrowser控件将自动在加载指定文本之前导航到about:black URL。这意味着Navigation、Navigated和DocumentCompleted设置此属性时会发生事件,并且Url的值属性不再有意义。(来源:MSDN:http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.documenttext(v=vs.110).aspx)

例如:

webBrowser.DocumentText = "<html></html>";

其中"<html></html>"是您的动态html,或者例如您的iframe。

操作HTML:接下来,如果您想操作HTML本身并刷新它,那么我建议您使用特定于HTML的库来帮助您操作HTML。HTML敏捷包就是一个例子:http://htmlagilitypack.codeplex.com/-也可在NuGet上获得(NuGet敏捷包Url:https://www.nuget.org/packages/HtmlAgilityPack)。然后,在操作它之后,您可以再次使用DocumentText属性来加载/刷新HTML。

最新更新