据我了解,您正在处理的问题是 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 :)。
您可以将其设置为使用当前安装的互联网版本
资源管理器,在页面内使用 META 标记,或编辑注册表
在将运行 webbrowser 控件的机器上(编辑
Current_User 和 Local_Machine 都可以工作)。
WebBrowser 控件将(通常)使用您所使用的任何版本的 IE
已安装,但出于兼容性原因,它将呈现页面
默认在 IE7 标准模式下。
如果您想利用新的 IE9 功能,您应该添加
元标记<meta http-equiv="X-UA-Compatible" content="IE=9" >
在 HTML 页面的 <head> 标记内。
必须在任何指向 CSS、JavaScript 的链接之前添加此元标记
<head> 中的文件等也可以正常工作(仅
其他<meta> 标签或<title> 标签可以在它之前)。
另一种方法是将注册表项添加到:
HKLM > 软件 > 微软 > Internet Explorer > 主要 >
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没有的特权。
如果 WebBrowser 控件,不确定 IE 10.0 何时出现
默认引擎将转到 10.0(如果 10.0 安装在
当然)或者即使在 IE 10.0 之后它仍将保持为 IE 7.0
发布,我们将不得不看到它一旦出来。然而,如果我们
根据以前的经验猜测,我怀疑 IE 10.0 将是
最后一个使用 IE 7.0 渲染引擎的版本,当 IE 11 到来时
出,默认渲染引擎将保持为 IE 11 为所有
IE 11 和 IE 14 之间的 IE 版本。这只是猜测
推断他们过去所做的事情。
有关值的更多信息,您可以将注册表设置为check this out: