【问题标题】:Iframe tag not loaded in Web browser control of Windows formWindows 窗体的 Web 浏览器控件中未加载 iframe 标记
【发布时间】:2014-01-10 08:42:25
【问题描述】:

我开发了一个 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 控件中加载某些内容。这个假设是否正确,如果不是,请在您的问题中更准确。我还假设您想要操作 HTML,因为您想要刷新或添加“动态 HTML 上下文”——这是我回答的第二部分。如果还不清楚,请提供更多关于你所追求的信息(例如:写出一些文字场景)。

标签: c# .net winforms


【解决方案1】:

我会尝试回答令人耳目一新和操纵,因为我认为这就是你所追求的信息。

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

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

例如:

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

"&lt;html&gt;&lt;/html&gt;" 是您的动态 html,或者例如您的 iframe。

处理 HTML: 接下来,如果您想操作 HTML 本身并刷新它,那么我建议您使用 HTML 特定库来帮助您操作 HTML。这方面的一个例子是HTML Agility Packhttp://htmlagilitypack.codeplex.com/ - 也可以在NuGet(NuGet AgilityPack Url:https://www.nuget.org/packages/HtmlAgilityPack)上找到。然后在操作它之后,您可以再次使用该 DocumentText 属性来加载/刷新 HTML。

【讨论】:

  • webBrowser.DocumentText = "";不起作用,因为我必须编写两个不同的 HTML 内容,当我使用 DocumentText 时,它会与早期的内容重叠。使用 Document.Write 时,它​​不会重叠,并且会显示两个内容。
  • 然后,正如我在答案的第二部分中建议的那样,首先操作 HTML(如果需要,使用帮助 html 库,例如 HTML Agility Pack),然后将其写回?您正在经历的具体情况是什么,您能描述一下,以便我们为您提供更好的答案吗?
  • 事情是我在应用实际的 HTML 内容之前应用了一些样式元素。像 1) wbflyout.Document.Write(style tag) 然后 2) wbflyout.Document.Write(dynamic HTML) 所以当我使用 wbflyout.DocumentText 它只加载最后一个设置的值。我也只在一些专门为笔记本电脑用户使用的机器上面临这个问题。它在具有上述给定代码的台式机上工作正常。
  • 嗯,我明白了。不过,我认为准备好您预先展示的文档将是解决您问题的一个不错的选择/解决方案。目前我没有看到任何其他方式。也许其他人想出了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-21
  • 2021-12-08
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
相关资源
最近更新 更多