一,问题的提出

偶然发现,Winform的里的web浏览器和IE浏览器实际安装的版本似乎并不同步,很有趣!

下面有张图,里面一个窗口是用IE9打开某网站,另一个窗口是用Winform的web浏览器+打开同样的网站,有意思的事情出现了。

在IE9窗口中,这个网站左边菜单树无法显示,原因是IE9使用的技术较新,而网站使用的技术较旧,未能及时同步更新到支持IE9所致。该如何办呢?

微软在IE9中提供一个兼容性视图功能,只要一点击兼容性视图就可以兼容旧版本浏览器的网站。


引用MSDN“为了克服潜在的兼容性问题,Internet Explorer支持一种称为兼容性视图的功能,允许用户在IE7模式下显示麻烦的页面。“URL:http://msdn.microsoft.com/en-us/library/dd567845(v = VS.85).aspx

也就是说,这个兼容模式就是IE7的模式。

又查了些MS资料,发现这个兼容性视图在IE8时首次引入,在IE9,IE10中都将继续支持。

再翻回来看的Winform + web浏览器这个窗口,它打开同样的网站却能显示左边菜单树,这样看来,似乎web浏览器不用设置就默认自动打开了兼容性视图模式。

现在就去仔细查一下权威资料,核实一下两个问题:
1.Webbrowser与IE到底是什么关系?是否确实用即内核,是否本质上和360安全浏览器,傲游浏览器和腾讯TT等IE内核浏览器相同
.2.Webbrowser是否使用兼容浏览模式,以及这个模式是否能改?

二,查询结果

1.webbrowser调用的就是本机IE9,并且webbrowser默认就是运行在IE7模式下,除非你改变它。

发现一个msdn的帖子,明确表示webbrowser调用的就是本机IE9,并且webbrowser默认就是运行在IE7模式下,除非你改变它。
如何使c#WebBrowser等同于IE浏览器
http://social.msdn.microsoft。 COM /论坛/ EN /的WinForms /线程/ 2ed65b9d-c601-4ca8-bde1-64584fc87515


没有任何消息来源备份的情况下,首先发布了如此大胆的主张。您可能应该阅读IE SDK(如果您想使用webbrowser控件需要阅读的手册)或者通过IE编程论坛(这是其他人经常在IE编程时遇到的地方),如果你想使用它webbrowser控件。

Webbrowser是IE API的包装器。没有多个版本的IE在同一台计算机上共存的东西。您将始终从webbrowser控件获取计算机上安装的唯一版本的IE。

默认IE和webbrowser之间有许多记录的设置差异。基本上你不必在webbrowser中选择可能破坏你的应用程序的新功能(Visual Studio团队在这里学到了一个很难的教训,当IE8打破Visual Studio的向导时),你必须编写代码来选择加入,除非改进是安全相关。这意味着除非您在功能控件中更改模式,否则webbrowser将以IE7模式运行。

请注意,某些网站声明了他们对IE7或IE8模式的要求。强制IE9模式可能不明智。

2.微软新闻组的一个帖子,没有IE的Webbrowser Control,里面明确提到,不装IE,无法用webbrowser。
http://groups.google.com/group/microsoft.public.vb.controls/browse_thread/thread/7575bd25e0730ded/aa40f3dfc799407d?lnk=gst&q=WebBrowser+ie#aa40f3dfc799407d

必须在机器上安装IE才能使用Webbrowser Control。

必须安装Internet Explorer才能使用WebBrowser控件。根本就没有ifs,ands或buts。如果未安装IE,您如何期望使用IE功能?

3.如何设置WebBrowser在IE9模式下工作呢?
答曰:需要修改注册表,具体看下面4,5,6,尤其6最全面,可以光看6。

4.WPF webbrowser控件使用IE7而不是IE9 
http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/4431908e-1869-4435-bcea-a3ec0820edfb

摘抄几句:
我如何使它所以WPF WebBrowser控件将使用IE9的浏览器引擎,而不是IE7?
我有一些HTML在WebBrowser控件中的呈现方式与IE9浏览器中的呈现方式不同。当我在WebBrowser中运行以下javascript时,结果为“7”。就像在IE7中一样。

我发现Rick Strahl的一篇文章描述了将使WebBrowser使用IE9的注册表设置。但我想避免这种情况。我很想知道IE7是如何使用的.http://www.west-wind.com/weblog/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version 
回答:您想避免为webbrowser主机设置文档兼容模式的唯一记录方法吗?为什么?

5.WebBrowser和CSS3?
http://social.msdn.microsoft.com/Forums/en-AU/winforms/thread/1b656af7-bda9-47d9-8f9a-1d886d3688ca
默认情况下,Web浏览器控件以兼容模式运行,除非您设置功能浏览器仿真注册表项。事实上,IE9能够正确渲染CSS3并且浏览器控制似乎并不表明浏览器控制没有在IE9标准模式下运行。

您需要设置此链接中描述的浏览器仿真功能密钥(FEATURE_BROWSER_EMULATION)http://msdn.microsoft.com/en-us/library/ee330730%28v=vs.85%29.aspx

您可以使用9000值,除非您要为所有页面强制使用IE 9标准模式。如果以后,您需要使用9999。

HKLM

如果使用hklm和64bit机器,则需要检查是否需要更改Wow6432Node。

最后,您需要在注册表项中添加进程名称托管浏览器控件作为值名称。

Windows注册表编辑器版本5.00

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ MAIN \ FeatureControl \ FEATURE_BROWSER_EMULATION] 
“prevhost.exe”= dword:00001f40 
“sllauncher.exe”= dword:00001f40 
“WindowsFormsApplication1.exe”= dword:0000270f

6.Web浏览器控制 - 指定IE版本
http://www.west-wind.com/weblog/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version

我在很多应用程序中使用Internet Explorer Web浏览器控件来显示文档类型布局。HTML恰好是最常见的文档格式之一,以这种格式显示数据 - 即使在桌面应用程序中,通常比使用普通桌面技术更容易。

Web浏览器控件的一个问题是它默认情况下一直停留在IE 7渲染模式中。即使IE 8和现在9已经显着升级了IE渲染引擎,默认情况下CSS浏览器和HTML兼容,但Web浏览器控件也没有。特别是IE 9 - 凭借其大大改进的CSS支持和基本的HTML 5支持是一个很大的改进,即使IE控件使用IE的一些内部渲染技术,它仍然停留在旧的IE 7渲染默认情况下。

无论您是在WPF应用程序,WinForms应用程序,使用ActiveX控件的FoxPro或VB经典应用程序中使用Web浏览器控件,这都适用。在幕后,所有这些UI平台都使用COM接口,因此您会被这些相同的规则所困扰。

通过注册表黑客进行功能委派
幸运的是,从Internet Explore 8及更高版本开始,通过注册表设置可以解决此问题。您可以指定注册表项以指定该应用程序应使用哪种呈现模式和IE版本。这些并不是全球性的想法 - 必须为每个应用程序单独启用它们。

32位和64位应用程序有两组不同的键。

32位:

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

值键:yourapplication.exe

64位:

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

值键:yourapplication.exe

该值指定IE版本如下:

将此键设置为的值(取自此处的 MSDN )为十进制值:

11001(0x2AF9)
Internet Explorer 11.网页以IE11标准模式显示,与!DOCTYPE指令无关。

11000(0x2AF8)
Internet Explorer 11.包含基于标准的网页!DOCTYPE指令以IE11模式显示。

10001(0x2AF7)
Internet Explorer 10.网页以IE10标准模式显示,与!DOCTYPE指令无关。

10000(0x2710)
Internet Explorer 10.包含基于标准的网页!DOCTYPE指令以IE10模式显示。

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标准模式显示。这种模式毫无意义,因为它是默认的。

通过设置这些密钥,您的应用程序可以轻松地在计算机上使用最新的Internet Explorer版本。不幸的是,似乎没有一个密钥说使用已安装的最新版本 - 不幸的是你必须具体说明该版本。鉴于Windows 7及更高版本可以运行IE 11,我要求用户使用IE 11,如果我想使用HTML5和更高级的CSS功能,如Flexbox,但如果您的内容更简单,您可能可以使用IE 10或甚至IE 9。

好的,言尽至此,无话可说了!

web浏览器与IE的关系,如何设置web浏览器工作在IE9模式下?相关推荐

  1. ie浏览器java 脚本下载_如何设置ie浏览器中的activex控件和插件java脚本下载用户验证...

    ActiveX是Microsoft提出的一组使用COM(ComponentObjectModel,部件对象模型)使得软件部件在网络环境中进行交互的技术集.它与具体的编程语言无关.作为针对Interne ...

  2. 设置MySQL复制时,replicate-ignore-db模式下如何正常工作

    在复制中,如果启用参数 replicate-ignore-db / replicate-do-db 后想要让复制正常运行,只需在连接数据库后不执行 "use db" 语句即可,如果 ...

  3. 解决ftp的pasv模式下iptables设置问题

    关于ftp的两个模式我就不再缀述,这里主要说下pasv模式下,iptables的设置 大家都知道,pasv模式下,控制端口是21,而数据传输端口再是大于1024的随机端口,这样iptables要想全部 ...

  4. esp8266设置sta失败_ESP8266的AP模式与STA模式简单测试

    一.三种工作模式STA模式(Station):工作在STA模式下的8266就像是一个接收机一样,它可以接收来自无线路由器发出的信号,实现了8266通过接收路由器的信号而能够连接互联网,如果把8266安 ...

  5. 设置Web页面试用手机浏览器(iphone)

    如果WEB页面没有经过特殊处理,在iphone浏览器上看页面会变的很小.可以在HEAD里用 META设置页面试用iphone浏览器, 设置如下: <meta content="widt ...

  6. 【像素与浏览器视口的细节】及移动web设置“width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no“原因

    初学网页制作,很常见的做法就是找各种线上的网页,然后查看源代码,参考学习这些网页是如何实现自己的设计的.而对我来说,我印象最深的一个知识点,是这样的: <div class="wrap ...

  7. 设置Web浏览器的HTTP或HTTPS代理(设置网页IP代理)

    [1]设置Web浏览器的HTTP或HTTPS代理: 原理:非常简单,修改注册表中的两个键值,然后调用InternetSetOption函数更新即可. 步骤: 1.打开注册表:HKEY_CURRENT_ ...

  8. 常见web前台技术之间的关系html,css,javascript...

    在网上浏览到这篇博客本来想自己总结但是发现人家写的已经想当好了,让我想精简也无法精简那就挑选我认为重点的东西赋值粘贴 过来 如果你是一个Web开发初学者,那么你难免会在网上搜索HTML, CSS, X ...

  9. 我的学习笔记005--常见web前台技术之间的关系html,css,javascript...mxx

    在网上浏览到这篇博客本来想自己总结但是发现人家写的已经想当好了,让我想精简也无法精简那就挑选我认为重点的东西赋值粘贴 过来 如果你是一个Web开发初学者,那么你难免会在网上搜索HTML, CSS, X ...

最新文章

  1. Reactive Extensions简介一
  2. [SPP-NET]Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
  3. python字符串与文本处理技巧(2):大小写敏感搜索、最短匹配、多行匹配、Unicode标准化
  4. MySQL 5.7.18的安装与主从复制(转自:https://www.baidu.com/home/news/data/newspage?nid=9485770887287731252n_typ)
  5. DIV+CSS专题:十天学会DIV+CSS
  6. 十多位全球技术专家,为你献上近十个小时的.Net微服务介绍
  7. rsync同步工具学习笔记
  8. Linux 查看CPU信息
  9. 12月数据库榜单,整体排名稳定如昨,Oracle 分数接连下降
  10. 遍历一个List的几种方法
  11. Mac OS X 系统修改Terminal终端配色
  12. ch cc 2019Mac(ch cc 2019直装版)2.1中文特别版
  13. 谷歌chrome浏览器安装json插件
  14. Linux下Mysql5.5的Cmake安装以及sphinx结合
  15. UVC之MJPEG流
  16. 极狐GitLab硬实力助力中国开源生态建设
  17. 暑假计算机培训心得体会,暑期培训心得体会模板集锦10篇
  18. android内置sd卡挂载过程,Android获取机身存储、内置SD卡与外置TF卡路径
  19. 边缘云市场份额,百度智能云领先!
  20. (转)Linux下管道的原理

热门文章

  1. Ray Ozzie——宇宙中最顶尖的程序员
  2. VSCode前端开发工具介绍、下载和安装(从头到尾)
  3. 前端如何提交文件,不使用form表单提交方式提交文件,JS提交文件
  4. 用java链接lodp取数据
  5. 影视剪辑教学小技巧,合适的配音是灵魂,记得收藏起来
  6. 数组的filter过滤方法将对象数组内容改变——js基础积累——犯傻记录
  7. 怎么快速区分不同客户?CRM告诉你
  8. Android 颜色渐变 属性动画
  9. vector删除指定值的方法
  10. 2020年自考计算机应用基础和实践是什么,2020年自考计算机应用基础复习重点7