`

如何在页面中设置IE浏览器的文档模式

阅读更多
最近在使用一个开源框架,发现该框架能跨浏览器和版本,但唯独在IE下的Quirks Model下表现不太好。

一开始想着如何自己去完善在该模式下的问题,后来一想为何不找到一种方法,在代码里面设置好让页面在IE浏览器下面不呈现Quirks Model呢?

于是在网上找资料,发现了原来可以通过DTD的声明来让浏览器决定用何种模式。

我把
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

改为
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/html4/strict.dtd">


就不会出现Quirks Model了,问题也就解决了

================================
参考资料:

标准模式与怪异模式:
       由于历史的原因,各个浏览器在对页面的渲染上存在差异,甚至同一浏览器在不同版本中,对页面的渲染也不同。在W3C标准出台以前,浏览器在对页面的渲染上没有统一规范,产生了差异(Quirks mode或者称为Compatibility Mode);由于W3C标准的推出,浏览器渲染页面有了统一的标准(CSScompat或称为Strict mode也有叫做Standars mode),这就是二者最简单的区别。

    W3C标准推出以后,浏览器都开始采纳新标准,但存在一个问题就是如何保证旧的网页还能继续浏览,在标准出来以前,很多页面都是根据旧的渲染方法编写的,如果用的标准来渲染,将导致页面显示异常。为保持浏览器渲染的兼容性,使以前的页面能够正常浏览,浏览器都保留了旧的渲染方法(如:微软的IE)。这样浏览器渲染上就产生了Quircks mode和Standars mode,两种渲染方法共存在一个浏览器上。
   
火狐一直工作在标准模式下,但IE(6,7,8)标准模式与怪异模式差别很大,主要体现在对盒子模型的解释上,这个很重要,下面就重点说这个。



那么浏览器究竟该采用哪种模式渲染呢?这就引出的DTD,既是网页的头部声明,浏览器会通过识别DTD而采用相对应的渲染模式:

1. 浏览器要使老旧的网页正常工作,但这部分网页是没有doctype声明的,所以浏览器对没有doctype声明的网页采用quirks mode解析。
2. 对于拥有doctype声明的网页,什么浏览器采用何种模式解析,这里有一张详细列表可参考:http://hsivonen.iki.fi/doctype/
3. 对于拥有doctype声明的网页,这里有几条简单的规则可用于判断:对于那些浏览器不能识别的doctype声明,浏览器采用strict mode解析
4. 在doctype声明中,没有使用DTD声明或者使用HTML4以下(不包括HTML4)的DTD声明时,基本所有的浏览器都是使用quirks mode呈现,其他的则使用strict mode解析。
5. 可以这么说,在现有有doctype声明的网页,绝大多数是采用strict mode进行解析的。
6. 在ie6中,如果在doctype声明前有一个xml声明(比如:<?xml version="1.0" encoding="iso-8859-1"?>),则采用quirks mode解析。这条规则在ie7中已经移除了。


如何设置为怪异模式:
方法一:在页面项部加 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
我们用Eclipse的HTML模板新建的html页面,自动就有上面东东

方法二:什么也不加。


如何设置为标准模式:
加入以下任意一种:
HTML4提供了三种DOCTYPE可选择:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

XHTML1.0提供了三种DOCTYPE可选择:
(1)过渡型(Transitional )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
(2)严格型(Strict )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
(3)框架型(Frameset )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">


这里有一张详细列表可参考:http://hsivonen.iki.fi/doctype/



如何判定现在是标准模式还是怪异模式:

方法一:执行以下代码
alert(window.top.document.compatMode) ;
//BackCompat  表示怪异模式
//CSS1Compat  表示标准模式
方法二:jquery为我们提供的方法,如下:
alert($.boxModel)
alert($.support.boxModel)



IE6,7,8浏览器的标准模式还是怪异模式 盒子模型的 差异







详细说明:http://hsivonen.iki.fi/doctype/
  • 大小: 34 KB
  • 大小: 38.8 KB
分享到:
评论
1 楼 无双Rama 2015-03-15  
<html>
	<head>
		<style type="text/css">
			.d1 {
				width: 200px;
				height: 150px;
				margin: 1px;
				border: 2px solid red;
				padding: 3px;
			}
		</style>	
	</head>	
	<body>
		<div id="div1" class="d1">
			hahaha
		</div>
	</body>
	<script type="text/javascript">
		var d = document.getElementById("div1");
		
		alert(d.clientHeight + "," + d.offsetHeight);
	</script>
</html>


Chrome 输出:156,160
IE     输出:146,150

相关推荐

    Deepin XP系统优化与设置专用工具 1.65_简体中文绿色免费版 环境模式的优化

    另外,还可以在此修改计算机名,自定义设置“我的文档”储存目录,设置IE浏览器首页等实用功能。 Deep XP系统优化专用工具 单击“优化向导”按钮,进入Deep XP系统优化专用工具,如图所示,与很多优化工具不同的是...

    期末大作业-基于javaWeb的房屋租赁管理系统源码+数据库+项目文档+PPT报告.zip

    期末大作业-基于javaWeb的房屋租赁管理系统源码+数据库+项目文档+PPT报告.zip 系统网站模式为MVC模式,基于MySql数据库,采用Jsp,Session绘画跟踪...3. 调式环境:火狐浏览器、IE浏览器 4. 适用环境:支持任何浏览器。

    无线路由器设置.doc

    三、在电脑上打开IE浏览器,地址栏输入无线路由器IP地址,回车 四、查看说明书,在弹出的界面输入正确的用户名和密码,登陆无线路由器的设置页面 。 五、在路由器界面中找到设置向导,按其提示一步步输入即可, ...

    一行代码解决各种IE兼容问题(IE6-IE10)

    x-ua-compatible 用来指定IE浏览器解析编译页面的model x-ua-compatible 头标签大小写不敏感,必须用在 head 中,必须在除 title 外的其他 meta 之前使用。 1、使用一行代码来指定浏览器使用特定的文档模式。 &lt;...

    Visual C++编程技巧精选集 光盘

    150.如何在IE浏览器工具栏上添加按钮 l51.如何使用代码设置工具栏图标 152.如何使用代码获取工具栏指针 153.如何使用代码获取状态栏指针 154.如何隐藏或显示应用程序的状态栏 155.如何在状态栏中增加新的窗格 156....

    iWeb Office2000[EXE版]

    3、采用插件技术,可以完全融入IE浏览器中,方便系统维护、方便用户操作。 4、采用自定义协议包进行数据的组装和分析,系统开放性好,便于二次开发。 5、采用了Com组件和JavaBean组件技术,很好的实现了跨平台...

    300个注册表优化修改文件

    禁止IE浏览器的脚本调试程序.reg 禁止IE浏览器的升级检查.reg 禁止IE显示图片.reg 禁止IE自动安装组件.reg 禁止Outlook Express用户打开可能包含病毒的附件.reg 禁止打开或保存带病毒的Outlook邮件.reg 去掉IE...

    iWeb Office2000[OCX版]

    3、采用插件技术,可以完全融入IE浏览器中,方便系统维护、方便用户操作。 4、采用自定义协议包进行数据的组装和分析,系统开放性好,便于二次开发。 5、采用了Com组件和JavaBean组件技术,很好的实现了跨平台...

    iWeb Office2000[ASP版]

    3、采用插件技术,可以完全融入IE浏览器中,方便系统维护、方便用户操作。 4、采用自定义协议包进行数据的组装和分析,系统开放性好,便于二次开发。 5、采用了Com组件和JavaBean组件技术,很好的实现了跨平台...

    asp.net知识库

    在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中...

    建站之星v2.1最新商业破解版 带1千多套模板

    20、修正添加文章时添加子类别在火狐和谷歌浏览器下类别名为乱码 21、修正文章分类和产品分类模块调用数据不同步生效问题 22、修正数据库备份/恢复文字表达引起客户误解为整站数据备份问题,此功能仅针对数据库...

    最新建站之星2.1商业破解版 带1千多套模板

    20、修正添加文章时添加子类别在火狐和谷歌浏览器下类别名为乱码 21、修正文章分类和产品分类模块调用数据不同步生效问题 22、修正数据库备份/恢复文字表达引起客户误解为整站数据备份问题,此功能仅针对数据库...

    Visual C++编程技巧精选500例.pdf

    047 如何在文档类中设置标题栏文字? 048 如何防止在标题栏上显示文档名? 049 如何禁止标题栏的最小化按钮?… 050 如何禁止标题栏的最大化按钮? 051 如何禁止标题栏的关闭按钮? 052 如何获取标题栏的按钮尺寸? 053 ...

    商用版本文本编辑器DotNetTextBoxV6.0.8Source 源码

    3)修正IE浏览器下特殊格式的闪烁特效无效的BUG,现在IE浏览器下闪烁特效用发光字体特效代替! 4)修正二级以上目录调用控件时插入文件的路径转换无效的BUG 5)完善了水印控制的功能,文字水印支持更换字体及颜色! 6)优化...

    Google Chrome 6.0.451.0 Dev 版(一个由Google公司开发的网页浏览器)

    例如,Google Translate(仅提供英文版)只要检测到网页的语言与谷歌浏览器的语言不同,就会在该网页顶部显示横幅。您可以点击横幅中的按钮,以便将该网页自动翻译成您选择的语言。  P.S 目前chrome已经可以通过...

Global site tag (gtag.js) - Google Analytics