IE9 WebBrowser控件是否支持IE9的所有功能,包括SVG?

Omk*_*kar 83 c# browser webbrowser-control .net-3.5 internet-explorer-9

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

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

我担心的是,我想在其上渲染一些SVG图形.

mik*_*kel 125

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

如果要利用新的IE9功能,则应在HTML页面的标记<meta http-equiv="X-UA-Compatible" content="IE=9" >内添加元标记<head>.

这个元标记必须在任何链接到CSS,JavaScript文件等之前添加,这些链接也在你<head>的工作中正常工作(只有其他<meta>标签或<title>标签可以在它之前).

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

HKLM>软件> Microsoft> Internet Explorer> Main> FeatureControl> FEATURE_BROWSER_EMULATION

并在那里添加值为'9000'的'myApplicationName.exe'以强制WebBrowser控件以IE9模式显示页面.虽然您也可以使用其他值,但请注意,这些文档并不完全准确,因为无论您使用何种值,都无法在IE 8模式下呈现页面.

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

  • 请注意,如果您在64位Windows上运行32位应用程序(调用32位MSIE),则应将注册表项添加到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION代替. (21认同)
  • 元标记就像一个魅力.非常感谢! (7认同)
  • _content_部分的不同值可以在这里找到:http://msdn.microsoft.com/en-us/library/ie/ms533876(v = vs.85).aspx (2认同)
  • 我尝试了元标记,但它不起作用.我收到一条错误消息,指出"HTML1115:X-UA兼容的META标签('IE = 9')被忽略,因为文档模式已经完成.",它引导我访问网页http://evolpin.wordpress.com/ 2011/02/25/IE9兼容性和最元标记/.然后解决方案是确保元标记是<head>块内的第一个元素. (2认同)

whi*_*awk 82

WebBrowser控件的IE9"版本",如IE8版本,实际上是几个浏览器中的一个.与IE8版本不同,您可以通过更改doctype来更好地控制页面内的呈现模式.当然,要更改浏览器模式,您必须像早期的答案一样设置注册表.这是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
Run Code Online (Sandbox Code Playgroud)

这是完整的代码集:

  • 9999(0x270F) - Internet Explorer 9.无论使用何种!DOCTYPE指令,网页都以IE9标准模式显示.
  • 9000(0x2328) - Internet Explorer 9.包含基于标准的网页!DOCTYPE指令以IE9模式显示.
  • 8888(0x22B8) -无论!DOCTYPE指令如何,网页都以IE8标准模式显示.
  • 8000(0x1F40) - 包含基于标准的网页!DOCTYPE指令以IE8模式显示.
  • 7000(0x1B58) - 包含基于标准的网页!DOCTYPE指令以IE7标准模式显示.

完整的文档:

http://msdn.microsoft.com/en-us/library/ee330730%28VS.85%29.aspx#browser_emulation

  • 安装IE 9后,似乎无法在IE 8模式下获取页面.将值设置为7000将进入IE 7模式,并且8000/8888/9000/9999将其置于IE 9模式.这是否是某种错误或者是否是故意的我不知道. (8认同)
  • 在开始为我工作之前,我必须将关键字添加到current_user和local_machine.但之后成功了. (2认同)

小智 24

谢天谢地,我找到了这个.以下内容非常重要:

<meta http-equiv="X-UA-Compatible" content="IE=9" >
Run Code Online (Sandbox Code Playgroud)

如果没有这个,尽管在IE8中工作得很好,但我所生成的报告都没有在IE9安装后发挥作用.它们会在Web浏览器控件中正确显示,但是当我调用.Print()时,会有丢失的字母,抬起的空格等.它们只是基本的HTML,即使在Mosaic中也应该能够呈现.嘿不知道为什么IE7兼容模式会变得混乱.值得注意的是,你可以.Print()同一页5次,并且每次都会丢失不同的字母.它甚至可以延续到PDF输出,所以它绝对是浏览器.


小智 17

关于64位Windows的说明似乎让几个人绊倒了.如果您的应用程序在64位Windows下运行,则可能需要在[HKLM\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]下设置DWORD.


小智 16

只是为了完成......

您必须将注册表项添加到:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

对于32位操作系统

*******要么*******

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

对于64位操作系统

并且此条目必须是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仿真)

为什么这不是DEFAULT值(当你安装IE 11时 - 或者任何版本),而不是IE 7或8,我永远不会知道......


Tyl*_*ong 15

我知道这个帖子已经老了,已经有了全面的答案.

万一你不知道这个:

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

您不必将IE版本号硬编码为

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

  • @Christian你确定吗?据我所知,如果网页在标题中包含`<meta http-equiv ="X-UA-Compatible"content ="IE = edge">`,则webBrowser将以最新的IE模式加载.为什么有超过90个赞成mikel的anwer?因为他的解决方案有效 如果您可以更改网页,则不需要更改注册表. (4认同)

Alf*_*ero 6

我完全同意所提供的解决方案,但我认为有点澄清是重要的,我认为可能是必要的.

对于需要添加带有提供值的DWORD的每个进程(另请阅读:vshost.exe,yourWinformApplication.exe.svchost或application.exe的名称),在我的情况下,我在应用程序中留下9000(十进制)名称和运行顺利,无错误的脚本.

最常见的错误是认为有必要按原样添加"contoso.exe"并认为一切正常!