HTML5Test网站在线检测浏览器API支持度,Modernizr用于页面内特性判断,caniuse-api/browserslist查兼容性数据,手写检测需规避隐私模式等陷阱。
HTML5 兼容性检测工具绝大多数是在线服务,html5test.com 是最常用、更新最及时的。打开浏览器访问就能立刻出分,无需下载、无需安装、不写配置。它会自动运行一整套 Canvas、WebGL、Web Workers、localStorage 等 A
PI 检测,最后给出总分和各模块支持详情。
注意:html5test.com 测的是「当前浏览器」的能力,不是你写的 HTML 文件是否合规——它不校验语法或语义错误,只看底层 API 是否可用。
如果你需要在自己的页面里判断某个 HTML5 特性是否存在(比如用户能否用 input type="date"),就得引入 Modernizr。它不是“测试工具”,而是一个特性检测库,适合开发阶段做渐进增强。
Modernizr 不检测全部 HTML5 标签,只覆盖它内置的约 100 个特性(含 CSS3)modernizr.com/download 勾选需要的检测项再下载 标签上自动添加的 class(如 no-draganddrop),别手动删掉前端工程中常需知道某特性在哪些浏览器版本可用,这时不用开网页,直接查数据源:
$ npx caniuse-cli flexbox ✓ flexbox: Chrome 21+, Firefox 20+, Safari 6.1+, iOS Safari 7.0+, Android Browser 4.4+
caniuse-api 和 browserslist 都基于 caniuse.com 的数据库,但后者更常用于构建工具(如 Babel、Autoprefixer)caniuse-cli 返回的“Chrome 21+”——某些 Android WebView 或旧版 Edge 可能有兼容性断层postcss,在 .browserslistrc 里写 last 2 versions, not dead,比手动查更贴近真实构建行为手写特性检测看似简单,但容易误判。比如检测 localStorage:
// ❌ 错误:仅检查全局变量存在性
if (window.localStorage) { ... }
// ✅ 正确:还要捕获 QuotaExceededError 和 SecurityError
try {
const test = '__storage_test__';
localStorage.setItem(test, test);
localStorage.removeItem(test);
} catch (e) {
// 可能是隐私模式(Safari 无痕)、禁用、或配额超限
}
SecurityError,而非返回 undefined
document.createElement('canvas').getContext('2d') 返回 null 表示不支持 2D 渲染,但不等于不支持 canvas 标签本身fetch 不能只看 window.fetch,IE 完全没实现,但某些 polyfill 会挂载到 window 上导致误判html5test.com 给 Safari 95 分,不代表你的 WebRTC 应用就能跑通,还得看权限、HTTPS、设备摄像头是否就绪。