HTML4兼容IE6+等老浏览器,HTML5则要求IE9+;老浏览器需通过DOCTYPE、HTML5 Shiv和特性检测实现有限兼容,但核心API无法真正支持。
HTML4 能在 IE6+、Firefox 2+、Chrome 早期版等几乎一切“能叫浏览器”的环境里跑起来;HTML5 则明确要求现代解析能力——IE9 是分水岭,IE8 及以下基本不认 article、section、video 等语义标签,连 document.querySelector 都可能报错。
所谓“能用”,是指:页面不会白屏、基础内容仍可读,但新特性不会生效。关键靠三件事撑住:
必须写在第一行——它让 IE6–IE8 进入“准标准模式”,避免触发更糟的怪异模式nav、header)需用 HTML5 Shiv 注入 DOM 支持:localStorage、canvas.getContext、input[type="date"])必须先检测再调用:if ('localStorage' in window) {
localStorage.setItem('key', 'value');
} else {
// 降级到 cookie 或隐藏该功能
}很多属性看似写了就起作用,实则被静默忽略——开发者容易误判兼容性:
required、placeholder、autofocus 在 I
E9 以下完全无效,表单提交照样通过,前端校验必须手写audio 和 video 标签会被解析为未知元素,但可通过 或 Flash fallback 补救flexbox、grid、@supports 等 CSS 新特性,在 IE10 之前全无支持,连 display: flex 都会回退成 blockfetch() 在 IE 全系缺席,必须用 XMLHttpRequest 替代现实答案是否定的——不是技术做不到,而是成本远超收益:
真正该花力气的地方,是用特性检测守住底线,而不是让新代码迁就二十年前的解析器。