首页 > 代码库 > 兼容性
兼容性
对于普通文本和 HTML 标签,各浏览器均进入了混杂模式,都看到疑似的 HTML 文档正文了,浏览器不太会往下追查 DOCTYPE 在哪里。
对于 HTML 注释和 XML 声明,它们跟上面的普通文本和 HTML 标签有些差别,它们不会在页面中展示出来,即不可视。而有的浏览器则显得十分“智能”,非 IE 浏览器均会忽略它们的存在,DOCTYPE 被正确解析。但是在 IE6 中,DOCTYPE 之前的 XML 声明会导致页面进入混杂模式,而所有的 IE 均会使 DOCTYPE 之前出现了 HTML 注释的页面进入混杂模式。在 IE9 中当出现这种情况时,浏览器在控制台中给出了提示:“HTML1113: 文档模式从 IE9 标准 重新启动到 Quirks ”,看来微软在这一点上不打算“随大流”,这样做也可以敦促作者尽量避免在 DOCTYPE 之前加入其他内容。 有的前端工程师很聪明,他既在 DOCTYPE 之前加入了他需要的内容,却又没有使 IE 由于这些内容而进入混杂模式。
由于历史的原因,各个浏览器在对页面的渲染上存在差异,甚至同一浏览器在不同版本中,对页面的渲染也不同。在W3C标准出台以前,浏览器在对页面的渲染上没有统一规范,产生了差异(Quirks mode或者称为Compatibility Mode);由于W3C标准的推出,浏览器渲染页面有了统一的标准(CSScompat或称为Strict mode也有叫做Standars mode),这就是二者最简单的区别。 W3C标准推出以后,浏览器都开始采纳新标准,但存在一个问题就是如何保证旧的网页还能继续浏览,在标准出来以前,很多页面都是根据旧的渲染方法编写的,如果用的标准来渲染,将导致页面显示异常。为保持浏览器渲染的兼容性,使以前的页面能够正常浏览,浏览器都保留了旧的渲染方法(如:微软的IE)。这样浏览器渲染上就产生了怪异模式(Quircks mode)和标准模式(Standars mode),两种渲染方法共存在一个浏览器上。
兼容性