c# - 在呈现之前从 WebBrowser Control 中删除标记

标签 c# .net webbrowser-control

问题:

我正在运行带有嵌入式 WebBrowser 控件的 winforms 应用程序。我使用神奇的注册表设置将此控件切换到 IE 8 模式(如此处的回答 Will the IE9 WebBrowser Control Support all of IE9's features, including SVG? )。

但是现在,如果我导航到一个包含元标记 X-UA-Compatible IE=9(自 http://msdn.microsoft.com/en-us/library/cc288325(v=vs.85).aspx 开始)的网站,我的网络浏览器控件将切换到 IE9 模式并忽略注册表设置。

我希望我的控件保持在 IE8 模式...

我的解决方案尝试

我尝试在控件加载 (Document_complete) 后使用 IHTMLDOMNode.removeChild 删除元标记,但控件不会重新呈现页面。

我尝试手动加载 HTML 内容(使用 WebClient),删除元标记并将其提供给网络浏览器控件(使用 Document.Write 或 DocumentText),但这种方式控件拒绝加载任何其他内容(像图片)。

帮助

现在,除了编写我自己的 HTTPProxy 并在途中修改响应(我不想这样做)之外,我没有其他想法。

有人有什么想法吗?

我正在使用 .Net 4,我无法更改将要显示的网站,我需要它在 IE8 模式下呈现,无论 X-UA-Compatible 标签如何...

谢谢!

最佳答案

我在 DocumentText 方面也遇到了问题 - 我放弃了。

我的解决方案是编写进程内 HTTP 服务器并将 WebBrowser 指向该服务器。

我在这里写了一篇关于它的文章:http://SimplyGenius.net/Article/WebBrowserEx

在我的例子中,我从文件系统中获取内容。
您必须更改它才能调用您的目标网站,但这应该不会有太多工作。
然后您可以根据需要修改 HTML,链接仍然有效。

关于c# - 在呈现之前从 WebBrowser Control 中删除标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10838222/

相关文章:

c# - 如何更改 MenuStrip 的外观

c# - 在模型的局部 View 中显示 System.Web.Helpers.Chart

c# - 使用 out 的通用类型参数

c# - 为位于 PageFooter 部分的 TableObject 执行脚本时出错

c# WebBrowser- 我如何等待 javascript 完成在文档加载完成时运行的运行?

c# - 在 C# 中将 PDF 文件转换为 HTML

C# Webbrowser 文档,invokemember ("click"),是否可以等到该单击操作得到解析?

c# - 在 String.Split 操作中指定空格的最佳方式

c# - Linq 到实体 SqlFunctions.DatePart

c# - 如何以编程方式清除 Windows 下的回收站?