IE 只是忽略 HTML5 元素,因为它不知道它们。来自 Modernizr 文档
Modernizr 在 JavaScript 中运行一个小循环,以启用来自 HTML5(以及 abbr)的各种元素,以便在 Internet Explorer 中进行样式设置。请注意,这并不意味着它突然让 IE 支持 Audio 或 Video 元素,它只是意味着您可以使用 section 而不是 div 并在 CSS 中设置它们的样式。
这意味着 Modernizr 将告诉 IE HTML5 中的新标签,以便您可以在它们上使用 CSS,但实际上并没有让它们做任何事情。另请注意,Modernizr 不会为元素添加默认样式,因此他们建议您使用 HTML5 CSS 重置,例如制作<section>
标签。display: block;
关于您的表单验证,topek 在解释 Modernizr 仅检测浏览器功能时是正确的,它实际上并没有做任何事情。Modernizr 背后的过程是您使用内置的 yepnope 测试功能来查看用户的浏览器是否可以执行“x”(在本例中为表单验证),然后有条件地和异步地将脚本或样式加载到“polyfill”(礼貌说'使用javascript来模仿本机行为)的方式。
在您的情况下,您将希望用于Modernizr.load()
测试Modernizr.input.required
并且可能Modernizr.input.autofocus
也使用,如下所示:
//the modernizr conditional load function
Modernizr.load({
//specify the tests, refer to the Modernizr docs for object names
test: Modernizr.input.required && Modernizr.input.placeholder,
//specify what to do if the browser fails the test, can be a function
nope: 'path/to/polyfill/script',
//sometimes you need to run some JS to init that script
complete: function(){ polyfillinitorwhatever(); }
});
你去了,一个相当精简的 Modernizr.load。虽然我发现他们的文档曲折,但它们实际上非常好。每次我遇到问题并在 Paul Irish 上发推文时,他都会发回一个文档链接,我在仔细检查后确实找到了我的答案。
验证是浏览器制造商作为标准实施的最复杂的 HTML5 功能之一。虽然我真的很喜欢它的简单性,但我在所有情况下都继续使用 jQuery.validate,除非用户有 Chrome 或 Opera - FF 原生验证仍然很弱。我建议你现在坚持使用 jQuery。