html5Test网站在线检测浏览器API支持度,Modernizr用于页面内特性判断,caniuse-api/browserslist查兼容性数据,手写检测需规避隐私模式等陷阱。

html5Test 网站直接测,不用安装
HTML5 兼容性检测工具绝大多数是在线服务,html5test.com 是最常用、更新最及时的。打开浏览器访问就能立刻出分,无需下载、无需安装、不写配置。它会自动运行一整套 canvas、webgl、Web Workers、localStorage 等 API 检测,最后给出总分和各模块支持详情。
注意:html5test.com 测的是「当前浏览器」的能力,不是你写的 HTML 文件是否合规——它不校验语法或语义错误,只看底层 API 是否可用。
本地跑 HTML5 检测?用 Modernizr 手动集成
如果你需要在自己的页面里判断某个 HTML5 特性是否存在(比如用户能否用 input type="date"),就得引入 Modernizr。它不是“测试工具”,而是一个特性检测库,适合开发阶段做渐进增强。
-
Modernizr不检测全部 HTML5 标签,只覆盖它内置的约 100 个特性(含 css3) - 自定义构建可减小体积:去
modernizr.com/download勾选需要的检测项再下载 - 它依赖
标签上自动添加的 class(如no-draganddrop),别手动删掉
命令行查浏览器支持?用 caniuse-api 或 browserslist
前端工程中常需知道某特性在哪些浏览器版本可用,这时不用开网页,直接查数据源:
立即学习“前端免费学习笔记(深入)”;
$ 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 无痕)、禁用、或配额超限 }
- 很多 API 在隐私模式下会抛
SecurityError,而非返回undefined -
document.createElement('canvas').getContext('2d')返回NULL表示不支持 2D 渲染,但不等于不支持canvas标签本身 - 检测
fetch不能只看window.fetch,IE 完全没实现,但某些 polyfill 会挂载到window上导致误判
真正难的不是“怎么装一个工具”,而是理解每个检测结果背后的真实限制条件——比如 html5test.com 给 Safari 95 分,不代表你的 WebRTC 应用就能跑通,还得看权限、https、设备摄像头是否就绪。