有效的HTML5现在可以使用吗?

时间:2009-12-19 15:46:34

标签: jquery html css html5

我一直在阅读有关HTML5的内容,并希望开始使用其中一些内容,尤其是数据集,因为我发现了一个有趣的jQuery插件,我可以开始使用...

http://www.barklund.org/blog/2009/08/28/html-5-datasets/

现在,我知道像IE6这样的老浏览器可能不喜欢在那里有额外的属性,可能不知道如何处理它们但是如果他们忽略它们并且网站仍然使用HTML5验证器验证那么那应该没问题,没有?

我特别想确保我不会因为没有有效的加价而受到谷歌等的惩罚,而且当他们检查时,我不会得到客户抱怨他们的网站“无效”使用沼泽标准W3C验证器。

人们对此有何看法?

14 个答案:

答案 0 :(得分:27)

如果您认为权衡可以接受,我建议您查看Dive Into HTML 5并自行决定。据我所知,使用HTML 5没有负面的SEO影响。我只是在 Dive Into HTML 5 上运行了w3c验证器,它自动检测到它是HTML 5并验证了它,所以我认为这也不会引起关注。

答案 1 :(得分:9)

答案很简单:

尚未!但很快。

答案 2 :(得分:6)

不,不是。它甚至不可能拥有有效的HTML5,因为规范还没有准备好。

但是,您可以为更改准备HTML4。第一步是开始使用有效的 HTML4 strict 和CSS。

规范中有一些稳定的部分,例如<canvas>标记。 <video>标签正在取得进展,并已由WebKit和Gecko实施。更重要的是,<video> tag allows backwards compatibility to Flash for browsers that don't support it without using javascript

第二步是从您的网站中删除所有专有(和免费)插件的所有要求,尽可能,包括Flash,Silverlight和JavaFx。换句话说,在可能的情况下始终使用开放标准。转换为HTML5是一个过程,可以一次执行一个步骤。不需要急于求成。

答案 3 :(得分:4)

使用HTML 5,你会遇到很多问题,特别是在旧版本的Internet Explorer上。最近John Resig做了a short talk(最后10分钟)关于你将要遇到的问题。

  1. 尝试使用未知元素导致它没有样式并且通常格式不正确(内部内容逃逸) - 但是,这里有一个解决方法HTML5 Shiv

  2. 尽管如此,未知元素仍然无法容纳其他未知元素。

  3. 使用innerHTML注入未知元素会导致出现各种奇怪现象。它可能会打破你的DOM。

答案 4 :(得分:4)

最重要的是要针对您希望支持的浏览器测试您希望使用的HTML5部分,并确认没有问题。您应该特别检查用于访问数据集数据的JS是否适用于IE6等。您还可以查看MicrodataRDFa,看看它们是否更适合您想要执行的操作。除了新元素(需要Javascript shiv在Internet Explorer中工作)之外,几乎所有其他内容都与HTML4 / XHTML1相同,或者应该被不支持的浏览器忽略。

Google并不关心您使用哪种doctype,并且向数据集添加数据无论如何都与Google无关(如果您想将此数据公开给搜索引擎/用户,请考虑另一种方法)。

W3验证程序会自动检测HTML5文档类型并使用相应的验证程序。请注意,它可以显示spurious error/warning regarding encoding - 这是一个已知错误。

关于答案,这里有很多FUD:

  • 使用HTML5 doctype!=使用新的HTML5元素
  • 使用HTML(而不是说XHTML)!=格式不佳的代码
  • HTML5!= IE6不支持

大多数HTML5都是HTML4,具有已定义的错误处理功能。这意味着现在可以使用大部分HTML5 ,因为您已经使用HTML4 / XHTML1。当然,在IE6中不支持HTML5的部分,但HTML4的部分也是如此。如果您想支持IE6,不要使用这些部分

答案 5 :(得分:3)

没有“有效的HTML 5”这样的东西。该规范尚未构建。 HTML 5甚至没有规范性的定义,它是一个工作草案。

答案 6 :(得分:1)

有效的HTML4,有效的XHTML和有效的HTML5都是单独的东西。它们的有效性由页面顶部的XML Schema定义定义。如果你真的想要,你可以创建自己的“CupOfTML”模式定义,它可能是有效的。显然不建议,因为无论有效性如何,浏览器仍然需要能够找出要做的事情。这很好地引导了HTML5 ......

即使是最现代化的浏览器中的浏览器实现和处理还没有完成,虽然有些元素在那里工作正常,但其他元素并不理想。如果您/您的组织能够应对某些人(不仅仅是IE6)获得不太理想的观看体验这一事实 - 那么请选择HTML5。更好的是,如果HTML5失败,提供一个“优雅降级”的网站版本,在其他所有版本中运行。但请注意,您实际上是在限制您的受众群体(视力障碍者可能拥有不支持它的自适应浏览器,以及仍在使用Win2K is stuck with IE6的任何人......)。

答案 7 :(得分:0)

如果您为商业网站开发,那么XHTML 1.0 Strict仍然是推荐使用的DocType,并且至少会在未来2到3年内保持不变。

JavaScript不是使HTML5文档在商业网站上运行的可行解决方案,因为您对可访问性负有法律义务(至少在欧盟,美国和澳大利亚)。

  • XHTML over纯HTML,更好的机器可读代码,没有标签汤
  • 请记住,在HTML5错误处理之前没有明确定义,因此无论您选择哪一个,您的页面都会对指定的DocType进行验证非常重要。选择一个更宽松的DocType比打破更严格的验证更好

答案 8 :(得分:0)

Google可能会随机开始决定它不喜欢您的网站,因为它的HTML无效,但它会非常奇怪。与所有其他搜索引擎一样,Google希望尽可能为人们提供最佳搜索结果。我没有看到因为HTML验证错误而忽略网站会如何帮助他们做到这一点。

通常会指定HTML5,以便在旧版浏览器中优雅地降级。我自己并不是非常熟悉数据属性(主要是因为Dive into HTML5尚未涵盖它们,但我怀疑IE 6对它们没问题。

至于你的客户抱怨无效,这几乎是一个人事管理问题。 HTML5是由W3C发布的标准,并且有一个验证器(http://html5.validator.nu/)。如果他们对你使用它仍然不满意,或许可以解释一下让你使用它们会带来的好处吗?

答案 9 :(得分:0)

预计会提出最终建议的HTML5的哪些部分可以正常使用,事实上,我这样做。我上周刚刚完成了一个完全使用CSS3属性在HTML5中构建的电子商务网站。虽然你必须要小心,但是一旦我对新东西感到满意,它就相对容易了。我会给出一个链接,但新内容将在下个月才会在线。

这不是我们用HTML5完成的第一个网站,但其他网站要简单得多。不要害怕HTML5。继续吧,但是,正如我所说,不要走出困境,而是使用那些已经落户的元素:导航,页眉,页脚等等。

答案 10 :(得分:0)

html5doctor.com有关于HTML5的很好的信息,也是为它写作的优秀开发人员。人们喜欢布鲁斯劳森(Opera Dev)雷米夏普。

答案 11 :(得分:0)

HTML5 DOCTYPE当然可以安全使用,但新的HTML5元素可以为DOM做些奇怪的事情。

其他人已经说过了。

Dive into HTML5显示了浏览器如何处理他们无法识别的元素。情况很复杂。 <article>的孩子将作为兄弟姐妹出现在IE DOM中。造型可能很棘手。提到了解决方案,链接到HTML5 Shiv(javascript)和HTML5重置样式表(CSS)。

答案 12 :(得分:0)

有趣的是,很久以前就提出这个问题了。我在Turtle-Necked-Wonder开始大肆宣传之后对此进行了调查。即使是2010年夏天,我也可以得出与上述主题相同的结论 - 尚未达到标准仍在进行中。尽管现在(2011年1月)书籍开始出现,但由于W3C仍在修补规范,它似乎还有点早。

虽然有些人可能会喜欢这样的东西,但是我们中的许多人都没有时间,直到它非常可靠且浏览器支持相当广泛。

答案 13 :(得分:-1)

这实际上取决于您的用户群。您可以通过调用它们来显示为块来使用所有结构元素。

header, section, footer,aside,article,nav ...{display:block;}

使用IE变得棘手,因为它不允许您使用元素,除非它们在DOM中。因此,要让网站显示,您必须将元素注入DOM。您依赖于javascript来加载页面,所以这就是为什么我说这取决于您的用户群。

document.createElement("header"); document.createElement("footer");
document.createElement("nav");
document.createElement("article");
document.createElement("section"); document.createElement("aside");

您还可以执行一些用户代理检测以查看是否有人在使用IE并提示他们下载Google Chrome浏览器内嵌框架http://code.google.com/chrome/chromeframe/