在Win7下,IE通常是10.0版本的,但使用WebBrowser控件在自己的应用程序中,默认确是用的7.0版本的,如何能够指定为自己的版本呢?
下面的方式转自,因为大体上说的就是这个意思,我也懒得重新码字了,就说一下自己遇见的一些问题:这种方式可以解决win7的32位系统下的问题,64位的请自查其他方法,也应当是通过注册表,但项目可能不太一样。然后这些方法一定要注意:它在visualStudio开发环境下是不管用的,不管是release版本还是debug版本,不要从开发环境中启动,直接运行编译下来的应用程序本身是起作用的!我就是不知道这点,耗费了两个晚上,都调试到凌晨2点,发现不好使,后来才发觉,原来不该从VS的开发环境中启动哇!
自从装了IE10以后,就发觉好些个网站显示都不是这么的正常,网站上有些功能居然就会出现一些意想不到的BUG——本来就是针对IE开发的,现在IE下居然用不上去了,让用户情何以堪?但是就为少量用户使用的系统去大动干戈的调整功能,这实在是让人头痛!在经过一番折腾以后,竟然找到一个特别M$的方式来解决 —— 强制高版本的IE浏览器用低地版本模式显示网页。
就是直接让IE10默认以指定的IE版本的浏览器模式来运行,并用这个指定的版本来进行解析页面,在上一篇定义文档兼容性的文章中,我们早已虽然晓得了浏览器模式和文档模式的 区别,并且我们通过更改X-UA-Compatible来更改了浏览器的文档模式。这个方式原本才能解决我们当下的问题,但实际上,我们不想让整个网站用 IE8或则IE7来解析,我们仅是想针对少数的几个人在核心的功能上使用IE8来处理。当然,我们还是才能使用页面上添加meta元素的 —— 但在这儿,我们寻求到另外的一个解决方案:由于使用核心功能的人群可控,并且数目少。因此直接控制IE,让高版本的浏览器(版本>=8)按照指定的 低版本模式进行解析。方法是直接调整注册表项:
code
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
或者
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
在FEATURE_BROWSER_EMULATION这个注册表项下添加一个DWORD的值,名称为:iexplore.exe值为十进制的8888或则8000。保存后,重新打开IE浏览器(IE8或更高),你都会发觉,浏览器此时使用的是IE8模式在进行浏览。
这个方式原本是用在解决这些使用了IE WebBrowser 控件的 应用程序在须要特定的浏览器版本支持下的。既然这么,那么让我们更进一步的了解下,在我们的程序中若果使用了IE WebBrowser以后,应该怎样指定浏览器版本。其实,如果有心,你可以打开里面两个注册表项的任意一个,说不定能够看见里面早已有一些值了,这些都 是早已指定特定浏览器版本的程序。比如我这儿就有下边这种:
#5:9:0:6:a:7:d:f:8:5:3:0:c:7:b:c:8:2:0:b:8:3:e:b:9:4:4:c:4:c:f:b#
devenv.exe是VS2010的应用程序,在这儿我们可以看见,M$强制要求devenv.exe中使用的浏览器版本为IE9。既然他都那么 用,自然而然,我们也应当能从中找到解决问题的技巧了。如果你在应用程序:SomeApplication.exe中使用了IE WebBrowser的控件,那么你若果想在SomeApplication.exe这个程序中的WebBrowser控件以某一个指定的版本的浏览器进 行解析页面,你就可以在上述的那种注册表项中加入你的程序了。比如你要指定为IE8运行,那么你只要新建一个DWORD值,名称为SomeApplication.exe,值为:8888即可。
到此我们早已会为浏览器和WebBrowser控件指定特定的浏览器运行版本了,但可能你会发觉,后面的数值有这么一些不好理解,那我要使用IE如何办?同样IE8如何会有8000和8888这样的数值呢,个表示哪些?如果你也有疑惑,那么请看下表吧,罗列出了常用的数值对照说明表:
值
说明
10001 (0x2711)
Internet Explorer 10。网页以IE 10的标准模式诠释,页面!DOCTYPE无效
10000 (0x02710)
Internet Explorer 10。在IE 10标准模式中根据网页上!DOCTYPE指令来显示网页。Internet Explorer 10 默认值。
9999 (0x270F)
Windows Internet Explorer 9. 强制IE9显示,忽略!DOCTYPE指令
9000 (0x2328)
Internet Explorer 9. Internet Explorer 9默认值,在IE9标准模式中根据网页上!DOCTYPE指令来显示网页。
8888 (0x22B8)
Internet Explorer 8,强制IE8标准模式显示,忽略!DOCTYPE指令
8000 (0x1F40)
Internet Explorer 8默认设置,在IE8标准模式中根据网页上!DOCTYPE指令展示网页
7000 (0x1B58)
使用WebBrowser Control控件的应用程序所使用的默认值,在IE7标准模式中根据网页上!DOCTYPE指令来展示网页。
FEATURE_BROWSER_EMULATION设置说明
注:
1. 准模式指的是浏览器模式,而!DOCTYPE控制的是文档模式。
2. 应用程序中包含的WebBrowser Control控件时,默认WebBrowser使用的是IE7,这是个很重要的知识点。
好了,到此应当对于IE运行于指定版本的方式早已介绍完毕,同时自己程序中怎样设置的方式也有了明晰方向,接下来的事情就是——用上去吧。