Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IE9 WebBrowser控件是否支持所有IE9';s功能,包括SVG?_C#_.net 3.5_Browser_Webbrowser Control_Internet Explorer 9 - Fatal编程技术网

C# IE9 WebBrowser控件是否支持所有IE9';s功能,包括SVG?

C# IE9 WebBrowser控件是否支持所有IE9';s功能,包括SVG?,c#,.net-3.5,browser,webbrowser-control,internet-explorer-9,C#,.net 3.5,Browser,Webbrowser Control,Internet Explorer 9,我最近升级到IE9测试版。现在,在我的.Net(3.5)WinForm应用程序中,我想使用WebBrowser控件 所以我的问题是,WebBrowser控件是否会显示IE9的所有属性和功能 我关心的是,我想在上面呈现一些SVG图形。是的,WebBrowser控件使用您安装的任何版本的IE。这当然意味着,如果您在使用IE 8的计算机上运行应用程序,那么您所依赖的IE 9功能将不可用。WebBrowser控件将使用您安装的IE的任何版本,但出于兼容性原因,它将默认以IE7标准模式呈现页面 如果您想利

我最近升级到IE9测试版。现在,在我的.Net(3.5)WinForm应用程序中,我想使用
WebBrowser
控件

所以我的问题是,
WebBrowser
控件是否会显示IE9的所有属性和功能


我关心的是,我想在上面呈现一些SVG图形。

是的,WebBrowser控件使用您安装的任何版本的IE。这当然意味着,如果您在使用IE 8的计算机上运行应用程序,那么您所依赖的IE 9功能将不可用。

WebBrowser控件将使用您安装的IE的任何版本,但出于兼容性原因,它将默认以IE7标准模式呈现页面

如果您想利用IE9的新功能,您应该在HTML页面的
标记中添加meta标记

此元标记必须添加在指向CSS、JavaScript文件等的链接之前,这些链接也位于
中,才能正常工作(只有其他
标记或
标记可以位于其之前)

另一种方法是将注册表项添加到:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
HKLM>SOFTWARE>Microsoft>Internet Explorer>Main>FeatureControl>FEATURE\u BROWSER\u仿真

并在其中添加值为“9000”的“myApplicationName.exe”,以强制WebBrowser控件以IE9模式显示页面。虽然也有,但请注意,这些文档并不完全准确,因为无论您使用什么值,似乎都不可能在IE8模式下呈现页面


将注册表项添加到HKCU中的同一路径而不是HKLM也会起作用-这很有用,因为写入HKLM需要管理员权限,而HKCU不需要管理员权限

谢天谢地,我找到了这个。以下几点极为重要:

<meta http-equiv="X-UA-Compatible" content="IE=9" >

如果没有这一点,我生成的所有报告都无法在IE9安装后工作,尽管它们在IE8中工作得很好。它们会正确地显示在web浏览器控件中,但当我调用.Print()时,会出现丢失的字母、占用的空白等。它们只是基本的HTML,即使在马赛克中也应该能够呈现。呵呵,我不知道为什么IE7的兼容模式会失控。值得注意的是,您可以对同一页执行.Print()操作5次,每次都会丢失不同的字母。它甚至会进入PDF输出,因此它肯定是浏览器。

WebBrowser控件的IE9“版本”与IE8版本一样,实际上是一个多个浏览器。与IE8版本不同,通过更改doctype,您可以对页面内部的呈现模式进行更多的控制。当然,要更改浏览器模式,您必须像前面的答案一样设置注册表。以下是用于功能\u浏览器\u仿真的reg文件片段:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"contoso.exe"=dword:00002328
以下是完整的代码集:

  • 9999(0x270F)-Internet Explorer 9。 网页显示在IE9中 标准模式,而不考虑 !DOCTYPE指令
  • 9000(0x2328)-Internet Explorer 9。包含基于标准的网页!DOCTYPE 指令以IE9模式显示
  • 8888(0x22B8)-网页 以IE8标准模式显示, 不管结果如何!DOCTYPE指令
  • 8000(0x1F40)-包含 基于标准!DOCTYPE指令 在IE8模式下显示
  • 7000(0x1B58)-包含 基于标准!DOCTYPE指令 以IE7标准模式显示
完整文档:


我完全同意提供的解决方案,但我认为有必要澄清一下

对于需要使用提供的值添加DWORD的每个进程(同时读取:vshost.exe、yourWinformApplication.exe.svchost或application.exe的名称),在我的示例中,我在应用程序名称中保留9000(十进制)并平稳运行且无错误的脚本


最常见的错误是认为有必要按原样添加“contoso.exe”,并认为这一切都可以工作

一个关于64位窗口的注释,它似乎让一些人绊倒了。
如果您的应用程序在64位Windows下运行,则可能需要在[HKLM\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE\U BROWSER\U EMULATION]下设置DWORD。

我使用了此解决方案,但它对我无效!因为我使用的是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]
我喜欢下面的(C#)代码,它为你的应用设置了注册表设置。虽然需要权限,但不确定安装后是否会将其剪切。对我来说,它解决了WPF中WebBrowser控件中WebSocket不可用的问题

只是为了完整

对于32位操作系统,必须将注册表项添加到:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
*******或*******

对于64位操作系统,必须将注册表项添加到:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
此条目必须是一个
DWORD
,名称为承载Webbrowser控件的可执行文件的名称;i、 e:

myappname.exe(不要像在MSDN网页中那样使用“Contoso.exe”…它只是一个占位符名称)

然后根据下表给它一个
DWORD
值:

我改为11001十进制或0x2AF9十六进制(IE 11仿真),因为这不是默认值(如果您安装了IE 11或任何版本)


那篇MSDN文章包含关于影响Internet Explorer web浏览器行为的其他几个注册表更改的注释。

关于whitehawk的公认答案。 我只是想增加一点实践经验。我只是想添加一条评论,但抱怨太长了

基本上,如果没有安装IE9,注册表开关功能\u浏览器\u仿真将根本无法工作

例如,根据我自己的经验,今天我试图让.net webcontrol与IE10模式一起工作,因为一个html