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

16

这个问题受到了这个问题的启发,其中最受欢迎的回答建议使用HTML5的一个特性。对我来说,这确实是一个好方法,但它让我好奇能否在一般情况下使用未来规范的功能。

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>
许多这些新功能旨在使浏览器能够自动验证表单,并为它们提供更好的输入(例如日期选择器)。其中一些只是方便,似乎是为未来做好准备。
据我所知,它们目前不会在现有浏览器中引起任何问题,并且它们允许干净、通用的客户端代码。
然而,尽管它们在HTML5中都是有效的,但它们对于HTML4来说却无效,而此时HTML5仍然是一份草案。
提前使用这些功能是个好主意吗?
它们是否存在着我没有意识到的浏览器实现问题?
我们是否应该开发现在就利用HTML 5草案功能的网页?

取决于你需要支持哪些浏览器。如果你需要使网站在IE上运行,我会说现在可能为时过早。 - Scott
1
据我所知,这些功能似乎不会破坏IE或其他浏览器的任何内容(尽管我可能会漏掉一些东西)。 - TM.
哦,你低估了IE在奇怪的条件下做非常奇怪事情的能力。 - Scott
HTML5的一些功能在所有浏览器中都会出现问题。 - Ionuț G. Stan
TM,实际上一些新标签在火狐、欧朋和谷歌浏览器中工作得几乎完美。我所说的“工作”是指它们可以通过CSS进行样式设计。然而,在IE中,你需要应用一些JavaScript小技巧。请查看此页面的源代码:http://www.apple.com/safari/ - Ionuț G. Stan
显示剩余2条评论
7个回答

12

有几个需要考虑的问题:

  1. 首先,验证并不意味着太多,因为一个HTML页面可能很好地验证,但是作者可能写得很糟糕,无法访问等。请参见Say no to "Valid HTML" iconsSending XHTML as text/html Considered Harmful(关于另一篇回答提到的流浪汉网测试),这些都是验证并不那么重要的原因。
  2. 鉴于此,我强烈建议使用新的DOCTYPE:在HTML5中只有一个原因需要它,即它是触发浏览器标准模式的最小元素,因此,如果您想要标准模式,请使用它;您几乎没有理由使用其他冗长、容易出错的DOCTYPE。
  3. 至于表单增强功能,您可以使用Weston Ruter的webforms2 JS库将其带到不支持的浏览器上。
  4. 最后,关于data-*属性,它 a)在所有浏览器中都有效(只要您使用getAttribute()),b)仍然比滥用titleclass属性好,c)不会因为我们之前说过验证并不那么重要而打扰您的验证(当然它很重要,但是如果有效性错误是故意的,那么您的页面无效并不重要;并且您已经可以在W3C验证器中使用HTML5验证,所以......);因此没有真正的理由不使用它们。

1
“验证并不是非常重要,因为一个HTML页面可以很好地被验证但却编写得很糟糕”——没错,但就你自己的开发目的而言,验证是一种简单、自动的方式来发现一些错误。 - Paul D. Waite

2

好问题!

简而言之:这取决于您的上下文和风险承受能力 :)

稍微详细一点:

  • 我认为在技术早期采用新技术总是有益的。这可以使您在商业世界中比后来者更具优势,并且在技术不断出现时,也可以让您对其产生更大的影响力。

  • 如果您不想重新编写代码或更新源代码,则可能不适合早期采用新技术。想要编写坚实、稳定的代码永不需要更改是完全可敬的,但这完全取决于您(以及您的业务环境)。


2
如果你的网页对搜索引擎排名非常重要,那么考虑到某些搜索引擎会优先验证HTML的有效性是值得考虑的(来源:http://www.hobo-web.co.uk/seo-blog/index.php/official-google-prefers-valid-html-css/)。
此外,考虑依赖新的日期输入元素(例如Opera浏览器中的元素和其他可能的元素),可以更方便开发者使用,但这也通常排除了包含更复杂Javascript控件的可能性,而这些控件将更好地为旧版浏览器服务(通常回退到简单的文本输入字段)。
当然,像往常一样,请不要仅依赖浏览器端检查,并在服务器端验证所有输入。

1
当然,我永远不会放弃服务器端验证。此外,添加客户端验证(但绝不替代服务器端验证!)可以使其更加用户友好。 - TM.
提交一个未经检查的页面,然后要么被标记成红色,要么被清空并出现晦涩难懂的验证错误,这确实让人感到无比痛苦。 - Jon

2
请不要在至少一个浏览器中测试新功能之前使用它们。例如,如果您使用现在的表单功能,请确保在Opera中进行测试。否则,通过为已被污染的遗留代码做出贡献,您可能会带来更多伤害而不是益处。
当一个功能已经在浏览器中实现并且您正在使用这些浏览器进行测试时,请使用新功能。
另请参见旧答案

1

在所有主流浏览器都支持新功能之前,我不会实现HTML的新功能。

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

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

转换到HTML5需要大量的努力和适应,并且根据我的估计,它不会一夜之间发生。预计至少需要3年才能普及。


1

请参考健壮性原则

在RFC 761(传输控制协议,1980年)中,美国计算机科学家Jon Postel总结了早期通信的期望互操作性标准,用于Internet协议(参见IEN 1111,RFC 760),如下所示:

TCP实现应遵循一个普遍的健壮性原则:在你所做的事情上要保守,在你从他人那里接受的事情上要开明

所以,在我看来,不行。


1
这也是一个好原则。 (但如果每个人在他们所做的事情上都很保守,我们如何改善技术状况呢?)不过,我认为这个原则特别适用于必须非常稳定的核心架构部件...就像我的第二点 :) 虽然如此,还是要给你一个赞,因为你的回答很好。 - John Weldon
@John Weldon,我认为历史上不同供应商的TCP实现存在差异。因此,在这种情况下保守指的是在遵循规范方面保守。我认为这个原则适用于任何需要跨平台互操作性的事物,包括与许多浏览器一起使用的HTML。 - Eugene Yokota
好观点。一方面我同意,但另一方面似乎有些局限性,不能适用于所有情况。也许对于企业网站或政府网页是可以的,但其他不那么严格的环境呢?好的讨论 :) - John Weldon

0

我会使用HTML 5只是为了好玩和学习,但绝对不会用这个新标准去碰我的生产代码(现有代码),至少在现在和直到我有一个有效的理由支持这个转变之前。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接