PHP开发

谨防浏览器的怪异模式捣乱

最近研究一个oscommerce的模板,IE浏览器总是出一堆奇奇怪怪的问题,比如载入的时候图片和文字还存在,等网站全部载入完毕后这些图片和文字就莫名其妙的消失了,开始以为是绝对定位有问题,搞了很久没效果,偶然在IE的调试工具中看见Quirks模式,一下搞明白了。。。

怪异模式,与DTD声明密切相关,如果DTD声明漏写,就会使浏览器按照怪异模式解析。DTD(Document Type Definition)即文档类型定义,它给你的HTML文档定义了一个规范,这个规范里有很多规则,你的HTML标签是大写还是小写,是否需要闭合等是不是正确就取决于这个规范。不同DTD会影响浏览器解析同一个网页的方式。浏览器解析网页时可以按照标准模式和怪异模式来进行。标准模式是我们现在最常用的模式,而怪异模式是给旧版本浏览器使用的,例如IE4,Navigator 4。如果用怪异模式解析一个按照现在W3C标准书写的网页,可能就要出错了。

如果遇到匪夷所思的问题,不妨先来看看浏览器是不是按照怪异模式解析的文档,可以借助Firefox 的Web Developer Toolbar和IE的Developer Toolbar来查看,firefox的比较明显,如下图所示,红色叉号即表示当前网页是以怪异模式解析的,不过我的oscommerce网站在firefox下以怪异模式解析并没有出任何问题,IE下却不行,导致我一开始总是在关注跨浏览器兼容性问题。

IE的Developer ToolBar也可以查看当前模式,如下图所示

怪异模式真的很怪异,千万不能再被这个耽误时间了