据我了解,您正在处理的问题是 IE 7 标准模式下 WebBrowser 控件呈现的版本控制问题,而您在 IE 中使用的实际 WebBrowser 是 IE 8 或 IE 9,它在那里工作,但您的 JQuery /JavaScript 或 CSS 包含在 IE 7 中不起作用。
让我直接告诉你。webbrowser 控件上的默认渲染引擎已修复,以确保跨所有平台的兼容性。
基本上,如果您安装的浏览器是 IE 7 - IE 9,那么使用的渲染引擎只有 IE 7.0(默认情况下)。
但是,如果您安装的 IE 版本是 IE 6 或更低,那么使用的渲染引擎是 IE 4.0(不是开玩笑),当然除非您另外设置。
有一种误解认为 WebBrowser 控件使用当前安装的任何内容(当前 IE 版本),但事实并非如此,因为它们这样做是为了减少向后兼容性问题。您可以通过在普通浏览器中访问 www.whatsmyuseragent.com,然后在 WebBrowser 控件中再次访问该网站来看到(作为证据)这确实是您的问题,您会看到它显示 MSIE 7.0 :)。
您可以将其设置为使用当前安装的 Internet Explorer 版本,或者在页面中使用 META 标记,或者在运行 webbrowser 控件的机器上编辑注册表(编辑 Current_User 和 Local_Machine 都可以)。
WebBrowser 控件将(通常)使用您安装的任何版本的 IE,但出于兼容性原因,它将默认以 IE7 标准模式呈现页面。
如果您想利用新的 IE9 功能,您应该在HTML 页面<meta http-equiv="X-UA-Compatible" content="IE=9" >
的标签内添加元标签。<head>
这个元标记必须在任何指向 CSS、JavaScript 文件等的链接之前添加,这些链接也可以<head>
正常工作(只有其他<meta>
标记或<title>
标记可以在它之前)。
另一种方法是将注册表项添加到:
HKLM > SOFTWARE > Microsoft > Internet Explorer > Main > FeatureControl > FEATURE_BROWSER_EMULATION
并在其中添加值为“9000”的“YourCompiledApplicationName.exe”,以强制 WebBrowser 控件以 IE9 模式显示页面。尽管您也可以使用其他值,但请注意,这些文档并不完全准确,因为无论您使用什么值,似乎都不可能让页面在 IE 8 模式下呈现。(注意:YourCompiledApplicationName.exe 必须是您编译的包含 WebBrowser 控件的 EXE 文件名,它仅适用于您已包含在注册表中的文件名)。此外,添加 vshost.exe 和 YourCompiledApplicationName.exe.svchost 不会有什么坏处,因此它在通过您的 IDE 运行时可以工作,而且,如果您的应用程序在 64 位 Windows 下运行,您可能还应该在以下注册表路径下设置以下 DWORD到相同的值(根据 32 位路径):
HK[LM|CU] \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION
将注册表项添加到 HKCU 而不是 HKLM 中的同一路径也将起作用 - 这很有用,因为写入 HKLM 需要管理员权限,而 HKCU 不需要。
不知道IE 10.0什么时候出来,WebBrowser控件默认引擎是否会转到10.0(如果系统上当然安装了10.0),或者即使在IE 10.0发布后它仍然是IE 7.0,我们将不得不看到它出来。但是,如果我们根据以前的经验猜测,我怀疑 IE 10.0 将是使用 IE 7.0 渲染引擎的最后一个版本,而当 IE 11 出来时,对于 IE 11 之间的所有 IE 版本,默认渲染引擎将保持为 IE 11 & IE 14. 这只是通过推断他们过去所做的事情的猜测。
有关可以将注册表设置为的值的更多信息,请查看: