这个问题在
this question年被启发了,其中最受欢迎的答案建议使用HTML 5中的一个功能。这似乎对我来说是一个很好的方法,但是让我好奇地使用未来规格的功能。
HTML 5提供了许多不错的改进,其中许多可以在当前浏览器中使用而不会引起问题。
一些例子:
// new,simple HTML5 doctype (puts browsers in standards mode) <!doctype HTML> // new input types,for easy,generic client side validation <input type="email" name="emailAddress"/> <input type="number" name="userid"/> <input type="date" name="dateOfBirth"/> // new "required" attribute indicates that a field is required <input type="text" name="userName" required="true"/> // new 'data-' prefixed attributes // for easy insertion of js-accessible Metadata in dynamic pages <div data-price="33.23"> <!-- --> </div> <button data-item-id="93024">Add Item</button>
许多这些新功能旨在使浏览器自动验证表单,并为其提供更好的输入(例如日期选择器)。有些只是方便,似乎是为未来做好准备的好办法。
他们目前不会在目前的浏览器中打破任何事情(据我所知),它们允许干净,通用的客户端代码。
然而,即使它们在HTML 5中都是有效的,它们对HTML 4是无效的,HTML 5在这一点上仍然是一个草案。
提前使用这些功能是一个好主意吗?
有没有浏览器实现问题,我还没有意识到?
我们现在应该开发使用HTML 5草图功能的网页吗?
解决方法
有几件事要考虑:
>首先,验证并不意味着太多,因为HTML页面非常有效,但创作不好,无法访问等。请参见Say no to “Valid HTML” icons和Sending XHTML as text/html Considered Harmful(参考另一个响应中提到的hobo-web测试)
鉴于此,我强烈建议使用新的DOCTYPE:在HTML5中使用它的唯一原因是在浏览器中触发标准模式的最小的事情,所以如果你想要标准模式,请随身携带;您几乎没有任何理由使用另一个冗长,容易出错的DOCTYPE
>对于表单增强功能,您可以使用Weston Ruter的webforms2 JS库将其带入不感兴趣的浏览器>最后,关于data- *属性,它可以在所有浏览器中工作(只要你使用getAttribute()),b)仍然比滥用标题或类属性更好,c)不会打扰你验证如前所述,验证不是那么重要(当然是这样,但是如果有效性错误是故意的,则您的页面无效,并且您已经可以在W3C验证器中使用HTML5验证。 ..);所以没有真正的理由不使用它们。