HTML 5 - 尽可能早期采用 - 好还是坏?

时间:2009-06-19 05:55:57

标签: html5 cross-browser w3c-validation

这个问题受到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草稿功能的网页吗?

7 个答案:

答案 0 :(得分:12)

有几件事需要考虑:

  1. 首先,验证并不意味着那么多,因为HTML页面很有效,但编写得很糟糕,无法访问等。请参阅Say no to "Valid HTML" iconsSending XHTML as text/html Considered Harmful(参考hobo-web另一个回复中提到的测试)
  2. 鉴于此,我强烈建议使用新的DOCTYPE:在HTML5中使用它的唯一原因是它是在浏览器中触发标准模式的最小的东西,所以如果你想要标准模式,那就去吧;你几乎没有理由使用另一个,冗长,容易出错的DOCTYPE
  3. 至于表单增强功能,您可以使用Weston Ruter的webforms2 JS库将其带到不知不觉的浏览器
  4. 最后,关于data-*属性,它a)适用于所有浏览器(只要您使用getAttribute()),b)仍然比滥用title或{更好{1}}属性和c)不会打扰您进行验证,因为我们之前说过,验证不是 重要(当然是这样,但是您的页面无效并不重要)如果有效性错误是故意的;并且您已经可以在W3C验证器中使用HTML5验证,那么......);所以也没有真正的理由不使用它们。

答案 1 :(得分:2)

好问题!

简而言之:这取决于您的背景和风险承受能力:)

稍长一点:

  • 认为总是很好地推动技术的早期采用。它为您提供了优于商业领域后期人才的优势,并且在您出现的技术影响方面也为您提供了更多的杠杆作用。

  • 如果您不想重新编写代码或更新源代码,那么提前采用可能不适合您。想要编写永不改变的稳定,稳定的代码是完全可敬的,但这完全取决于您(以及您的业务环境)

答案 2 :(得分:2)

如果您的网页严重依赖搜索引擎展示位置,则可能值得考虑一些引擎优先验证HTML(来源:http://www.hobo-web.co.uk/seo-blog/index.php/official-google-prefers-valid-html-css/)。

此外,值得考虑的是依赖于新的日期输入元素(例如Opera中的那些元素,可能还有其他元素)可以让开发人员更方便,它通常会排除包含更复杂的Javascript控件,这将更好的服务器较旧的浏览器(通常会回退到简单的文本输入字段)。

当然,与往常一样,不要依赖浏览器端检查并验证所有输入服务器端。

答案 3 :(得分:2)

在至少在一个浏览器中测试之前,请不要使用新功能。例如,如果您使用now form功能,请务必在Opera中进行测试。否则,你可能会因为有毒的遗产做出贡献而弊大于利。

当某项功能已在浏览器中实施并且您正在使用这些浏览器进行测试时,请务必使用新功能。

另见older answer

答案 4 :(得分:1)

请参阅Robustness principle

  

在RFC 761(传输控制   协议,1980)美国计算机   科学家Jon Postel总结道   早期的预期沟通   互操作性标准   互联网协议(参见IEN 111 1,RFC   760)如下:

     

TCP实施应该遵循   鲁棒性的一般原则: be   保守的你做的事,是的   你接受的自由主义   其他

所以,imho,不。

答案 5 :(得分:1)

我不会在HTML中实现新功能,直到至少他们得到所有主流浏览器的支持。

客户端不关心您的页面是否有效,如果它跨浏览器工作,他们更关心。即使我们努力实施最新标准,仍然会有客户和公司永远不会放弃他们的IE6,IE6将会在他们的浏览器要求列表上停留一段时间。

欢迎新的表单类型,但是必须在服务器端检查表单。

传递HTML5现有文档需要付出很多努力和调整,而且我估计不会在一夜之间发生。预计至少会有3年才会成为主流。

答案 6 :(得分:0)

我会使用HTML 5只是为了娱乐和学习,但最终我不会用这个新标准触及我的任何生产代码(现有代码),至少到现在为止,直到我有正当理由支持这一举措