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则不需要.
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)
这是完整的代码集:
完整的文档:
http://msdn.microsoft.com/en-us/library/ee330730%28VS.85%29.aspx#browser_emulation
小智 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" >
我完全同意所提供的解决方案,但我认为有点澄清是重要的,我认为可能是必要的.
对于需要添加带有提供值的DWORD的每个进程(另请阅读:vshost.exe,yourWinformApplication.exe.svchost或application.exe的名称),在我的情况下,我在应用程序中留下9000(十进制)名称和运行顺利,无错误的脚本.
最常见的错误是认为有必要按原样添加"contoso.exe"并认为一切正常!
| 归档时间: |
|
| 查看次数: |
102798 次 |
| 最近记录: |