自从装了IE10之后,就发现好些个网站显示都不是那么的正常,网站上有些功能竟然还会出现一些意想不到的BUG——本来就是针对IE开发的,现在IE下竟然用不起来了,让用户情何以堪?但是就为少量用户使用的系统去大动干戈的调整功能,这实在是让人头疼!在经过一番折腾之后,竟然找到一个非常M$的方法来解决 —— 强制高版本的IE浏览器用低地版本模式显示网页。

  就是直接让IE10默认以指定的IE版本的浏览器模式来运行,并用这个指定的版本来进行解析页面,在上一篇定义文档兼容性的文章中,我们已经其实知道了浏览器模式文档模式的 区别,并且我们通过修改X-UA-Compatible来修改了浏览器的文档模式。这个方法本来能够解决我们当下的问题,但实际上,我们不想让整个网站用 IE8或者IE7来解析,我们仅是想针对少数的几个人在核心的功能上使用IE8来处理。当然,我们还是能够使用页面上添加meta元素的 —— 但在这里,我们寻求到另外的一个解决方案:由于使用核心功能的人群可控,并且数量少。因此直接控制IE,让高版本的浏览器(版本>=8)按照指定的 低版本模式进行解析。方法是直接调整注册表项:

code
1
2
3
4
5
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之后,应该如何指定浏览器版本。其实,如果有心,你可以打开上面两个注册表项的任意一个,说不定就能看到上面已经有一些值了,这些都 是已经指定特定浏览器版本的程序。 比如我这里就有下面这些:

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运行于指定版本的方法已经介绍完毕,同时自己程序中如何设置的方法也有了明确方向,接下来的事情就是——用起来吧。

强制IE浏览器或WebBrowser控件使用指定版本显示网页的更多相关文章

  1. 强制IE浏览器或WebBrowser控件使用指定版本显示网页2

    一.问题的提出 偶然发现,Winform里的WebBrowser和IE实际安装的版本似乎并不同步,很有趣! 下面有张图,里面一个窗口是用IE9打开某网站,另一个窗口是用Winform+WebBrows ...

  2. delphi强制WebBrowser控件使用指定版本显示网页

    function TFrmmain.WriteAppNameToReg:Boolean; var reg:TRegistry; sPath,sAppName:String; Sver:string; ...

  3. 强制IE浏览器或WebBrowser控件

    注册表: 32 bit: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BRO ...

  4. [JavaScript]WebBrowser控件下IE版本的检测

    转载请注明原文地址:https://www.cnblogs.com/litou/p/10772272.htm 在客户端检查用户使用的浏览器类型和版本,都是根据navigator.userAgent属性 ...

  5. VC++使用WebBrowser控件,强制给控件指定版本显示网页

    转载:http://www.cnblogs.com/1175429393wljblog/p/5398928.html 最近为了抓取淘宝的成交数据,用C#的WebBrowser控件开发了一个简单的程序. ...

  6. 在.net中修改Webbrowser控件的IE版本

    根据32位.64位系统来分别修改对应的注册表路径的键值对,不需要重启程序. /// <summary> /// 修改Webbrowser控件模拟的IE版本 /// </summary ...

  7. PB打开ole控件IE浏览器版本问题_指定Webbrowser控件所用IE内核版本(转)

    如果电脑上安装了IE8或者之后版本的IE浏览器,Webbrowser控件会使用IE7兼容模式来显示网页内容.解决方法是在注册表中为你的进程指定引用IE的版本号. 比如我的程序叫做a.exe 对于32位 ...

  8. C# 指定Webbrowser控件所用IE内核版本

    如果电脑上安装了IE8或者之后版本的IE浏览器,Webbrowser控件会使用IE7兼容模式来显示网页内容.解决方法是在注册表中为你的进程指定引用IE的版本号. 比如我的程序叫做a.exe,以64位机 ...

  9. Webbrowser控件判断网页加载完毕的简单方法 (转)

    摘自:http://blog.csdn.net/cometnet/article/details/5261192 一般情况下,当ReadyState属性变成READYSTATE_COMPLETE时,W ...

随机推荐

  1. hibernate-4.3.5安装配置

    起初照着官方文档配,一直出错,貌似官方的文档时错的,查了非常多资料,综合整理了一个可行的方案,例如以下: 0.1包结构 test.demo test.domain  //实体类 test.util// ...

  2. UITableView的简单总结与回顾

    今天突发奇想的想对UItableView做一下汇总,感觉在编程中这个控件可以千变万化也是用的最多的一个了,下面就为大家简单总结下这个控件,也许还有不足,不过还是请各位不吝赐教了哈,那么我就开始了,我会 ...

  3. weblogic开机启动-超简单

    1.编写weblogic启动脚本,命名为start_weblogic_server.sh,内容如下:  #!/bin/bashnohup /home/weblogic/Oracle/Middlewar ...

  4. hdu 1232畅通工程

    Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通 ...

  5. [转]C++学习心得

    1.把C++当成一门新的语言学习: 2.看<Thinking In C++>: 3.看<The C++ Programming Language>和<Inside The ...

  6. ubuntu14.04中解压缩window中的zip文件,文件名乱码的解决方法

    在windows上压缩的文件,是以系统默认编码中文来压缩文件.由于zip文件中没有声明其编码,所以linux上的unzip一般以默认编码解压,中文文件名会出现乱码. 通过unzip行命令解压,指定字符 ...

  7. myeclipse10 如何把代码预览的窗口去掉

    1,选择菜单: windows -> preferences2,在弹出窗口中选择General-> Editors -> FileAssociations3,在上方框内选择*.jsp ...

  8. photoSlider-html5原生js移动开发轮播图-相册滑动插件

    简单的移动端图片滑动切换浏览插件 分别引用css文件和js文件 如: <link rel="stylesheet" type="text/css" hre ...

  9. 一个超级简单php的留言板

    第一步:配置好测试环境:(详细略了) 第二部:新建一个数据库,命名为guestbook(名字可以随便改),可以直接在phpmyadmin里面操作,在数据库里面新建一张表‘content’,表里面有4个 ...

  10. python bottle使用多个端口(多个进程)提高并发

    我的程序是用python结合bottle框架写的,但bottle自带wsgi原本只是单进程单线程运行模式(Bottle 默认运行在内置的 wsgiref 服务器上面.这个单线程的 HTTP 服务器在开 ...