再谈IE的浏览器模式和文档模式

原文:再谈IE的浏览器模式和文档模式
以前在 “IE8兼容视图(IE7 mode)与独立IE7的区别”一文中曾经涉及过浏览器模式和文档模式,但二者的区别却不甚了了,现在有了新的认识,再补充一下。

1.浏览器模式与文档模式概念

在较新的IE浏览器中(如IE8, IE9, IE10),为了解决兼容性的问题,引入了浏览器模式和文档模式两个概念,浏览网页时可以通过按F12键看到这两种模式。

 

浏览器模式的主要作用是为兼容较早版本的IE,它会控制浏览器发出的UserAgent,表示以哪个版本的浏览器发出请求,以此来允许为某个特定IE版本设计的代码正确执行(举例来说:有些代码真是判断ie版本的,还有css里也有判断ie版本的)。

 

文档模式的主要作用是影响浏览器显示网页HTML的方式,在接到返回的HTML文件后,决定以哪个IE版本的文档模式解析该页面(举例来说:JS脚本就是依赖文档模式,IE9的js变化就需要IE9文档模式来支持)。

2.如何使WebBrowser运行在IE9浏览器模式下

在安装了IE9的计算机上,Webbrowser并不是直接运行在IE9模式下,而是默认工作在IE9兼容视图(也就是IE7 Mode)下,为了让Webbrowser工作在IE9下,需要修改注册表,为应用程序指明使用IE9版本。

32位计算机需要修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION,增加YourApplication.exe,值为十进制9999。

64位计算机需要修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION,增加YourApplication.exe,值为十进制9999。

注意:9999最正确,9000则不推荐用,因为它不彻底。

3.如何使Htm页面使用IE9文档模式

如果htm页面中没有doctype,那么WebBrowser将不会使用IE9文档模式来解析页面(哪怕已经设置了注册表9999),而是仍沿用之前兼容旧版IE的 Quirks模来渲染,解释页面,JS脚本也将同样处置。这样的缺点是无法使用Html5新特性,优点是您的系统升级到IE9的兼容性改造工作将会大为减少。

修改Htm页面的方法之一是,在Head->Title下添加<META http-equiv="X-UA-Compatible" content="IE=9" > </META>,这样可确保HTM页面工作在IE9标准文档模式下。

 

注意:msdn上写的关于9999可以无视doctype而自动使页面运行在ie9文档模式的说法是错误的,这一点已经得到了权威的认可。

4.总结

欲使你的系统作为整体(包括WebBrowser和Htm页面)工作在IE9下,则以上2, 3两步均需遵守,缺一不可。

 

*******************

后记. 发现3确实不可或缺,但2却不必了,因为3的优先级比2高,基本上,有了3就可以了。

 

时间: 2025-01-26 10:42:13

再谈IE的浏览器模式和文档模式的相关文章

firefox-测试网站的兼容性仅仅改变浏览器模式和文档模式就可以了吗?

问题描述 测试网站的兼容性仅仅改变浏览器模式和文档模式就可以了吗? 做了一个网站,IE8.IE9.IE10.IE6.Google Chrome.FireFox.Opera.Safari都测试过了,唯独找不到IE7,没办法将IE10的浏览器模式和文档模式改为IE7测试,这么做可行吗? 解决方案 应该是可以的,将IE10的浏览器模式和文档模式改为IE7测试. 解决方案二: 更改模式可以,不过建议最好是用实际的ie7来测试最精确,VMware安装个xp虚拟机后安装ie7来测试

JS魔法堂:浏览器模式和文档模式怎么玩?

一.前言   从IE8开始引入了文档兼容模式的概念,作为开发人员的我们可以在开发人员工具中通过"浏览器模式"和"文档模式"(IE11开始改为"浏览器模式"改成 更贴切的"用户代理字符串")品味一番,它的出现极大地方便了苦逼的前端攻城狮们适配各版本的IE,但jser们也不能完全信任它,因为它只是提供尽可能 的文档模式模拟而已.   本篇大部分内容来源于官方解说:http://msdn.microsoft.com/library/

java开发-IE浏览器 浏览器模式和文档模式 开发中调试版本兼容问题

问题描述 IE浏览器 浏览器模式和文档模式 开发中调试版本兼容问题 我现在电脑安装的是ie10,当我在开发中想测试页面是否兼容10以下的版本时,是通过切换浏览器模式至低版本,还是切换文档模式至低版本,还是同时都切换,并保持一致. 希望用IE开发的老工程师回答,感激. 解决方案 装一个IETester,IETester是一个免费的WebBrowser控件,让您有渲染和IE8的JavaScript引擎,IE7和IE 6在Windows 7,Vista和XP的IE5.5中,以及在同一进程中安装的IE浏

css 兼容-CSS兼容ie8,浏览器模式与文本模式

问题描述 CSS兼容ie8,浏览器模式与文本模式 目前在做公司网站,检验个浏览器的兼容性,其他都好,唯独ie8以及8以下都不行,但是咯啊办要求兼容ie8,但自己版本是10,在8版本下,样式完全乱了,有没有什么好的办法啊? 之前在360检验时,360有快速模式和兼容模式,在代码中使用了前者是默认使用360的快速模式,后者是默认使用ie9版本,但是在ie8上面时仍然无法正确排版.有木有什么好的解决方案啊? 另外,在ie中使用F12,可以改掉浏览器模式和文档模式,通过选择这两个可以使用不同的ie版本来

JS魔法堂:精确判断IE的文档模式by特征嗅探

一.前言   苦逼的前端攻城狮都深受浏览器兼容之苦,再完成每一项功能前都要左顾右盼,生怕浏览器不支持某个API,生怕原生API内含臭虫因此判断浏览器类型和版本号成了不可绕过的一道关卡,而特征嗅探是继浏览器探测后另一利器处理上述问题.   二.何为特征嗅探 从前我们都是通过对navigator.userAgent或navigator.appVersion两个属性值进行特定字符串匹配和萃取来区 分浏览器类型和获取版本号的.但随着IE8提供可选的文档兼容性模式设置和各种加壳浏览器的出现,导致无法通过n

IE8浏览器如何确定文档模式

 本文将讨论IE8浏览器如何确定用以渲染网站的文档模式,如怪异模式(又称IE5模式)和标准模式(更多资料,英文:http://en.wikipedia.org/wiki/Quirks_mode).该内容对于开发人员和客户来说,是很重要的. 与此相关的,是我们最近更新的兼容性视图列表.此列表内容自从去年3月IE8正式版发布以来,已经减少了1000多个网站.从最初的3100多,减少到了现在的2000多一点.在与网站开发人员及标准制定人员的共同努力下,我们很高兴地看到需要出现在兼容性视图(CV)列表中

浏览器强行以IE7的文档模式展示我们的网页

 有时候由于浏览器的问题我们在IE7中开发的东西需要在IE9中展示 但是会出现兼容性的问题. 那么我们可以同技巧将用户端的浏览器强行以IE7的文档模式展示我们的网页  下面是针对iis asp.net程序来说的!  1.在每个需要加的页面中添加 <head runat="server" id="Head1">     <meta http-equiv="X-UA-Compatible" content="IE=Emul

再谈pipeline-filter模式

本文结合最近我正在实现的一个基于RabbitMQ的消息总线上所走的弯路来谈谈设计层面上的责任链模式以及架构层面上的pipeline-filter模式.写这篇文章的另一个目的是为了纠正我之前针对pipeline-filter模式写的一篇博文:<pipeline-filter模式变体之尾循环>,如果你想看看我之前为什么要那么做,你可以先看看那篇文章,不过无论看不看都不影响这篇文章的行文. 消息总线需要扩展性 目前这个消息总线实现了produce/consume.request/response.p

再谈浏览器兼容性测试

今天跟大家聊一个老生常谈的话题:浏览器兼容性测试. 测试国内网站的同学是不是已经非常头疼了,因为面对的浏览器除了国际大牌如IE, Chrome, Firefox, Opera, Safari, 还有国内诸多屌丝级的浏览器如:360安全浏览器,360极速浏览器,360影视浏览器(360碉堡了,会不会再搞出一些购物浏览器,买火车票浏览器啊?)搜狗双核浏览器,猎豹,淘宝,世界之窗,百度浏览器,还没完呢,听说过枫树浏览器吗?没听过的赶紧去科普科普吧!另外我今天还被不知不觉安装了云帆影视浏览器.再想想这些