我想在网页上使用一些新的 HTML5 表单属性和输入类型。有些浏览器已经支持它们,有些则不支持,也永远不会。这就是我想使用 Modernizr 的原因——这就是我的麻烦开始了。
据我了解,Modernizr 本身并不是一个 polyfill,而是一个可以测试浏览器是否能够处理一些新的 HTML5 / CSS3 内容的脚本。如有必要,可以加载“模拟”这些功能的 polyfill,以便在不支持/较旧的浏览器中使用它们。我猜这是正确的吗?
关于测试/加载:使用 Modernizr 加载 polyfill 的正确或最佳方法是什么?
在文档中我发现了这个:
Modernizr.load({
test: Modernizr.geolocation,
yep : 'geo.js',
nope: 'geo-polyfill.js'
});
但有些页面也这样做:
if (Modernizr.touch){
// bind to touchstart, touchmove, etc and watch `event.streamId`
} else {
// bind to normal click, mousemove, etc
}
另外,我如何真正了解这些功能检测是如何被调用的?Modernizr.geolocation
每个特征检测肯定存在类似的东西?
在 Modernizr GitHub 存储库中,也有许多用户贡献的功能检测。如何将这些实现到我的 Modernizr 版本中?还是最好只使用他们的构建器?
在 Safari 中,HTML5 表单验证有效,但没有用于显示错误消息的 UI。基本上,该功能只实现了一半。这就是为什么 Modernizr 在 Safari 中给出误报的原因,就像这里已经提到的那样:https ://github.com/Modernizr/Modernizr/issues/266 显然有人用这样的自定义测试解决了这个问题,但我仍然不明白如何使用它。1