我最近升级到了IE9-beta版。现在,在我的.Net(3.5)WinForm应用程序中,我想要使用WebBrowser
控件。
所以我的问题是,WebBrowser
控件是否会展示IE9的所有属性和功能?
我的担忧是,我想在其中渲染一些SVG图形。
我最近升级到了IE9-beta版。现在,在我的.Net(3.5)WinForm应用程序中,我想要使用WebBrowser
控件。
所以我的问题是,WebBrowser
控件是否会展示IE9的所有属性和功能?
我的担忧是,我想在其中渲染一些SVG图形。
WebBrowser控件将使用您安装的IE版本,但出于兼容性考虑,它默认以IE7标准模式呈现页面。
如果您想利用新的IE9功能,应在HTML页面的<head>
标签中添加元标记。
这个meta标记必须在任何链接到CSS、JavaScript文件等的<head>
之前添加,才能正常工作(只有其他标记或
WebBrowser控件的IE9“版本”,就像IE8版本一样,实际上是几个浏览器的组合。与IE8版本不同的是,您可以通过更改文档类型来在页面内部有一些对渲染模式的控制。当然,要更改浏览器模式,您必须像早期答案中所述设置注册表。这是FEATURE_BROWSER_EMULATION的reg文件片段:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"contoso.exe"=dword:00002328
以下是完整的代码集合:
完整文档:
http://msdn.microsoft.com/en-us/library/ee330730%28VS.85%29.aspx#browser_emulation
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
,而64位为HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
。 - Richard Chambers谢天谢地我找到了这个。以下内容非常重要:
<meta http-equiv="X-UA-Compatible" content="IE=9" >
在没有这个设置的情况下,我生成的所有报告都无法在IE9上正常工作,尽管它们在IE8上表现良好。它们在Web浏览器控件中显示正确,但是当我调用.Print()时,会出现缺失字母、白色空间混乱等问题。它们只是基本的HTML,即使在Mosaic中也应该能够呈现。不确定为什么IE7兼容模式会出现问题。值得注意的是,您可以将同一页打印5次,并且每次都会缺少不同的字母。这甚至会影响PDF输出,因此肯定是浏览器的问题。
关于64位Windows的一些注意事项,这似乎会让一些人感到困惑。 如果您的应用程序在64位Windows下运行,则可能需要在[HKLM\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]下设置DWORD。
仅为完整起见...
对于32位操作系统,您必须向注册表中添加一个条目:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
对于64位操作系统,您需要向注册表添加一个条目:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
此条目必须是一个DWORD
,名称为您的可执行文件名,托管Webbrowser控件;
例如:
myappname.exe(不要使用MSDN网页中的“Contoso.exe”作为占位符名称)
然后,根据表格在以下网址上给它一个DWORD
值:
http://msdn.microsoft.com/en-us/library/ee330730(v=vs.85).aspx#browser_emulation
我更改了为11001十进制或0x2AF9十六进制--- (IE 11 EMULATION),因为这不是默认值(如果您已安装IE 11或其他版本)。
该MSDN文章包含有关影响Internet Explorer Web浏览器行为的其他几个注册表更改的注意事项。
我知道这个帖子很古老,已经有全面的答案了。
以防你不知道:
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
你不必硬编码IE版本号,如下所示:
<meta http-equiv="X-UA-Compatible" content="IE=9" >
<meta http-equiv="X-UA-Compatible" content="IE=edge">
,则webBrowser将以最新的IE模式加载。为什么Mikel的答案获得了90多个赞?因为他的解决方案有效。如果您可以更改网页,则无需更改注册表。 - Tyler Liu是的,WebBrowser控件使用你所安装的IE版本。这意味着,如果你在安装了IE 8的计算机上运行应用程序,那么你所依赖的IE 9功能将不可用。
我曾尝试过这个解决方案,但它对我无效!因为我使用的是64位系统,所以我需要替换注册表:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
与众所周知的不同,
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
all "$(DevEnvDir)..\tools\vsvars32.bat"
editbin.exe /NXCOMPAT:NO "$(TargetPath)"
/headers
将显示 exe 文件的 DEP 设置。