强制IE浏览器或WebBrowser控件使用指定版本显示网页
自从装了IE10之后,就发现好些个网站显示都不是那么的正常,网站上有些功能竟然还会出现一些意想不到的BUG——本来就是针对IE开发的,现在IE下竟然用不起来了,让用户情何以堪?但是就为少量用户使用的系统去大动干戈的调整功能,这实在是让人头疼!在经过一番折腾之后,竟然找到一个非常M$的方法来解决 —— 强制高版本的IE浏览器用低地版本模式显示网页。
就是直接让IE10默认以指定的IE版本的浏览器模式来运行,并用这个指定的版本来进行解析页面,在上一篇定义文档兼容性的文章中,我们已经其实知道了浏览器模式和文档模式的 区别,并且我们通过修改X-UA-Compatible来修改了浏览器的文档模式。这个方法本来能够解决我们当下的问题,但实际上,我们不想让整个网站用 IE8或者IE7来解析,我们仅是想针对少数的几个人在核心的功能上使用IE8来处理。当然,我们还是能够使用页面上添加meta元素的 —— 但在这里,我们寻求到另外的一个解决方案:由于使用核心功能的人群可控,并且数量少。因此直接控制IE,让高版本的浏览器(版本>=8)按照指定的 低版本模式进行解析。方法是直接调整注册表项:
|
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指令来展示网页。 |
注:
1. 准模式指的是浏览器模式,而!DOCTYPE控制的是文档模式。
2. 应用程序中包含的WebBrowser Control控件时,默认WebBrowser使用的是IE7,这是个很重要的知识点。
好了,到此应该对于IE运行于指定版本的方法已经介绍完毕,同时自己程序中如何设置的方法也有了明确方向,接下来的事情就是——用起来吧。
强制IE浏览器或WebBrowser控件使用指定版本显示网页的更多相关文章
- 强制IE浏览器或WebBrowser控件使用指定版本显示网页2
一.问题的提出 偶然发现,Winform里的WebBrowser和IE实际安装的版本似乎并不同步,很有趣! 下面有张图,里面一个窗口是用IE9打开某网站,另一个窗口是用Winform+WebBrows ...
- delphi强制WebBrowser控件使用指定版本显示网页
function TFrmmain.WriteAppNameToReg:Boolean; var reg:TRegistry; sPath,sAppName:String; Sver:string; ...
- 强制IE浏览器或WebBrowser控件
注册表: 32 bit: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BRO ...
- [JavaScript]WebBrowser控件下IE版本的检测
转载请注明原文地址:https://www.cnblogs.com/litou/p/10772272.htm 在客户端检查用户使用的浏览器类型和版本,都是根据navigator.userAgent属性 ...
- VC++使用WebBrowser控件,强制给控件指定版本显示网页
转载:http://www.cnblogs.com/1175429393wljblog/p/5398928.html 最近为了抓取淘宝的成交数据,用C#的WebBrowser控件开发了一个简单的程序. ...
- 在.net中修改Webbrowser控件的IE版本
根据32位.64位系统来分别修改对应的注册表路径的键值对,不需要重启程序. /// <summary> /// 修改Webbrowser控件模拟的IE版本 /// </summary ...
- PB打开ole控件IE浏览器版本问题_指定Webbrowser控件所用IE内核版本(转)
如果电脑上安装了IE8或者之后版本的IE浏览器,Webbrowser控件会使用IE7兼容模式来显示网页内容.解决方法是在注册表中为你的进程指定引用IE的版本号. 比如我的程序叫做a.exe 对于32位 ...
- C# 指定Webbrowser控件所用IE内核版本
如果电脑上安装了IE8或者之后版本的IE浏览器,Webbrowser控件会使用IE7兼容模式来显示网页内容.解决方法是在注册表中为你的进程指定引用IE的版本号. 比如我的程序叫做a.exe,以64位机 ...
- Webbrowser控件判断网页加载完毕的简单方法 (转)
摘自:http://blog.csdn.net/cometnet/article/details/5261192 一般情况下,当ReadyState属性变成READYSTATE_COMPLETE时,W ...
随机推荐
- 写一个段落python代码推理list深浅
主要是针对嵌套列表问题. 列表套列表,究竟子列表那个更深... 这个问题想着就烦.假设嵌套10000万个列表是不是要统计10000个数再排序呢? 最后想了想用 list的extend功能 加上递归函数 ...
- Web项目去掉Js文件红叉
项目用到jquery,但将Jquery拷进去后,js文件有个红叉,看上去非常不爽.如下图: 解决方法: 1.找到项目下的.project文件 2.去掉Javascript验证 <?xml ver ...
- C# 操作 AppSettings节点
1.实例 //1.简单获取内容 string value = ConfigurationManager.AppSettings["one"] as string; Console. ...
- ASP.NET中过滤HTML字符串的两个方法
先记下来,以作备用! /// <summary>去除HTML标记 /// /// </summary> /// <param name="Htmlstring& ...
- Key lock 的秘密
研究死锁,或者观察sp_lock,有时候最恼人的莫过于你看到下面研究成果的key lock,但是却不知道究竟是哪个page 哪个row被lock住了: Exec sp_lock: 就说上面的key ...
- ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法
转帖:原文地址http://blog.csdn.net/panys/article/details/3838846 archive log 日志已满ORA-00257: archiver error. ...
- mysqlbinlog恢复数据
操作命令: 复制代码代码如下: show binlog events in 'mysql-bin.000016' limit 10; reset master 删除所有的二进制日志flush logs ...
- unity——使用角色控制器组件+射线移动
首先要导入unity标准资源包Character Controllers 这个标准资源包,为了方便,还添加了两外一个资源包Scripts,后者包含了一些基本的脚本个摄像机脚本. 没错,这次我们要使用其 ...
- Creating a settings table that can handle almost any type of value
Update: Updated article here. Today I wanted to be able to have a table store any type of value as a ...
- Form 表单常用正则验证 (收藏)
1.^\d+$ //匹配非负整数(正整数 + 0) 2.^[0-9]*[1-9][0-9]*$ //匹配正整数 3.^((-\d+)|(0+))$ //匹配非正整数(负整数 + 0) 4.^-[0-9 ...