HTML验证:值得吗?


52

与拥有可在所有主流浏览器上使用的无效HTML相比,确保所有页面均有效的优点和缺点(如果有)是什么?

另外,在执行Javascript之后拥有有效的HTML是否同样重要?


5
这不会回答您的问题,但是...在页面上放置doctype将使浏览器进入标准模式而不是怪癖模式。查找怪异模式以了解我的意思。
Evan Plaice 2010年

1
@Evan Plaice- 虽然没有任何 DOCTYPE。某些DOCTYPE实际上触发了怪癖或几乎是标准模式。HTML5规范对此进行了更详细的说明。
luiscubal

1
@luiscubal是HTML 5中的新增功能,因为来自en.wikipedia.org/wiki/Quirks_mode,它声明“ ...如果存在完整的DOCTYPE,则浏览器将使用标准模式,如果不存在,则将使用怪癖模式。 ”。
Evan Plaice

@Evan鲽不知道关于先前版本的HTML,但HTML5明确规定如何处理古DOCTYPES:看whatwg.org/specs/web-apps/current-work/multipage/...
luiscubal

1
@Evan Plaice换句话说,“ DTD HTML 2.0 Level 1”触发了怪癖模式。
luiscubal

Answers:


42

我认为这绝对是值得做的,但您永远不应成为验证的奴隶-这是一个傻瓜的游戏。

http://www.codinghorror.com/blog/2009/03/html-validation-does-it-matter.html

  1. 验证您的HTML。知道具有有效的HTML标记的含义。了解工具。多提供信息总是比少提供信息更好。为什么盲目飞?

  2. 没人关心您的HTML是否有效。除了你。如果你想。不要再想生产完全有效的HTML比运行网站,提供使用户满意的功能或完成工作更重要。


3
我得第二。我见过很多JavaScript库问题,这些问题可以归咎于无效的HTML。多个嵌套表格和非法关闭的标签是主要的违法者。就像Je​​ff所说的那样,不要成为奴隶,但是当jQuery不起作用时也不要抱怨,因为您的页面不是有效的HTML(XHTML,HTML 5或您选择的任何doctype)。
Gareth Farrington

@Jeff Atwood:当您说“没人关心您的HTML是否有效。除了您之外,”我不能完全同意。难过但真实,客户真的不在乎。
Marco Demaio 2011年

@MarcoDemaio为什么会很难过?作为客户和最终用户,我比该网站是否通过验证更关心该网站是否在所有浏览器上都能正常工作(大多数浏览器都不符合标准)。有效的HTML确实无关紧要。Google,Facebook,Twitter,此站点等。没有相关站点具有有效的标记。为什么?因为有效的HTML只会使页面肿,并增加带宽成本。
NullUserException 2011年

完全缩进的标记也是如此。这甚至更没有用,浪费了100%的带宽,并且没有任何实际用途。
NullUserException

@NullUserException:我认为这很可悲,因为我发现经过验证的网站通常在所有浏览器上的渲染效果都更好。请参阅我对Alan答案的评论:webmasters.stackexchange.com/a/373/1429验证保存给我的网站仍然可以为我节省大量时间。关于完美的缩进标记,我从未听说过有关它的规格。我可能要缩进3个空格,而您可能想缩进一个空格。
Marco Demaio 2011年

32

我认为有效的HTML是一个值得实现的目标,但不要将其视为建设良好网站的根本目标。

诀窍是,您的标记可能是完全有效的,但可能不是语义上的-例如,使用表格进行布局或导航。有效代码和语义代码之间是有区别的。

另外,如果您使用广告或外部脚本,它们可能会插入自己的标记,从而有可能真正与您自己的标记混淆。


22

我认为这是值得的,因为我通过寻求验证捕获了许多标记和逻辑错误。这是那些“必要但不足”的事情之一。有效的标记(如可以编译(或通过JSlint检出)没有错误,警告和提示的代码)是正确解决问题的良好第一步。


+1完全同意这一点。验证页面可以节省大量时间,这要花在JS以及看起来多么神秘的JS错误以及仅由于破旧的HTML标记或未关闭的HTML标记而导致的错误显示之后。此外,使用FF addon Html Validator [ addons.mozilla.org/en-US/firefox/addon/html-validator/]之类的工具,可以很轻松地在本地验证所有页面。
Marco Demaio 2011年

9

有效HTML的最大优点是,您的页面将比“主要浏览器”更易于访问。所有“主流浏览器”都具有无穷无尽的解决方法来处理填充WWW的所有无效垃圾。但是,坚持使用有效的HTML会有所帮助,例如,如果某人正在使用视觉障碍者的浏览器,或者离线访问您的页面等。


8

验证本身并不那么重要,因为很少有浏览器100%兼容,并且规范如何解释规则也不是100%明确。

但是,有效的HTML使您处于更好的位置来适应和改进您的网站。随着标准的发展,它们通常会向前迁移,并且如果您的新站点有效,那么更新以支持最新内容应该会更容易。

最重要的是,有效的底线使得更容易留在游戏的顶端,并尽可能地与最广泛的受众群体兼容。


4

最好的方法是了解哪些无效的HTML是有害的,哪些无效的HTML无关紧要。

例如,忘记关闭<div>标签非常糟糕,因为您的布局几乎肯定会在一个或多个浏览器中搞乱。

但是,在XHTML中使用<br>代替<br />没关系-所有浏览器都会将两者都解释为换行符而没有问题。target在链接上使用属性无效,但是最坏的情况是浏览器没有在新窗口中打开链接。


target在过渡XHTML中有效,并且仅受虐狂使用严格。省略斜杠将使您的页面无效XML,这可能会使屏幕抓取器感到困惑。如果选择使用XHTML,则页面至少应为有效XML。
Tgr

1
@Tgr:好笑,我以为受虐狂喜欢非标准模式。甚至过渡文档类型也存在问题(使用“几乎标准”模式等)
DisgruntledGoat 2010年

1
我认为严格是必不可少的-为什么选择冒弃用代码和怪癖模式的风险。使用Strict无需花费任何费用,除了它可以鼓励您了解更多有关首选标记版本的信息。
CJM

3

运行验证器时,您需要根据具体情况检查它给您带来的错误。验证重要吗?对我来说,这很重要。但这是一个要求吗?没有。

诸如多次使用相同的ID(而不是类),将块级元素放入内联级元素(通常这些元素在语义上也不适合这种方式),缺少图像的alt属性(残障人士的可访问性差)之类的事情),都很重要。诸如标签上的未知属性之类的东西并不重要。完全没有 诸如Dojo之类的Javascript框架或糟糕的Meebo社交媒体栏使用自定义属性作为钩子,HTML规范指出允许这些属性,并且任何未知属性都将被忽略。验证器不会忽略它们,但是会引发错误。这些错误可以忽略。

验证时,不要仅仅假设如果您有错误,那说明您做错了。语义在很大程度上更为重要,而且恰恰是发生这样的情况,即有效HTML通常不是拥有适当语义的自然结果。


我同意-验证您的网页,但是在某些情况下,只要您知道警告的原因,您可以选择忽略警告
Casebash 2010年

3

测试您的网站是否为有效HTML的原因之一是,它确保搜索引擎蜘蛛将能够完全索引并确定页面的含义。如果他们由于HTML格式不正确而无法这样做(主流浏览器可能会因为历史原因而无法正常运行),则可能会限制搜索引擎排名。

也有人猜测,尽管主要的搜索引擎在处理格式错误的HTML方面表现出色,但它们也可能会为有效性分配页面质量“点”,从而进一步影响您对内容应具有的最高排名。


2
Google明确表示无效的HTML对排名没有影响。但是,我可以看到HTML格式错误,以至于蜘蛛无法读取页面上的实际内容-尽管在这种情况下几乎可以确定浏览器会开始出现渲染问题。
DisgruntledGoat 2010年

@DisgruntledGoat您是对的,以下是
对此

@DisgruntledGoat显然...谷歌本身就充满无效的HTML的,我记得他们说,他们真的不在乎,它是一个很好的有无效的HTML如果这意味着更快的加载时间的事情。
NullUserException

3

我真的认为这不再重要了。我曾经是验证的奴隶,现在很少检查它。也许我因为确保自己的网站有效而精疲力尽,或者也许我只是不在乎,因为没有其他人会这样做。我可以保证99.9%的访客甚至不知道这是什么,甚至不在乎。将来可能会使用浏览器软件,但是那天到来时,我会担心它。


2

验证很有用,因为它可以帮助您发现一些难以捕获的错误,例如

<input name=foo value=<?php echo htmlspecialchars($_GET['foo']); ?> />

或不可预测的浏览器行为(例如,a在Firefox中有时将块元素放入可能会以难看的方式破坏)。


2

还没有人提到,无效的HTML可能会导致渲染时间变慢,而浏览器试图在显示时理解非标准的HTML。


如果可以的话,我会拒绝投票。我高度怀疑这是否有明显效果;我将更关注有效的标记使页面膨胀,并需要更多的时间来加载(尤其是在速度较慢/移动连接上)。
NullUserException 2011年

@NullUserExceptions:我不认为BradB提出的观点应为-1。可能难以证明,但是需要整理并修复HTML混乱的浏览器可能要比格式正确,没有错误的有效HTML页面花费更多。您为什么不提供此问题的答案,向我们展示由于HTML验证滥用而导致页面过大的一个很好的例子。与具有无效HTML代码的同一个页面相比,我不认为有效的HTML页面如何被夸大。
Marco Demaio 2011年

1

有有效的html没有缺点。有一个理由为什么要首先制定规范,以及为什么要在规范中投入大量精力来定义事物的工作方式。

基本上,您所获得的只是满足规格要求。这反过来意味着,如果出现问题,则读取html的程序(浏览器,自动程序)不能怪罪您未达到规范。并且其中一些程序会给您带来额外的收益(如果漫游器报告“符合规格”,则在搜索引擎中的排名会更高)。如果您符合规范,那么如果某些浏览器未按照您认为的方式呈现损坏的html,您将大为惊讶。

因此,符合规格并编写有效的html对您有好处,完全没有缺点。


哼,如果您符合规范,您会在哪些搜索引擎中获得更高的排名?

2
缺点是您要花费更多的开发时间来确保所有代码都符合规范。尽管此成本通常很小,但仍应作为缺点解决。
chatche 2010年

@kinopiko:如果有的话,那不是主要的(Google,Yahoo,Bing,Ask)。有一个完整的一塌糊涂的代码,即使是经验丰富的(人),Web开发人员无法读取可能会阻碍你,但使用一些“非法”属性对排名绝对的零影响。
DisgruntledGoat 2010年

这就是验证术语的问题。您是有效的还是无效的。没有学位。损坏的HTML(例如,未关闭的标签,放错位置的/缺少的结构标签等)是无效的,并且会损害SEO,但大多数人在说“验证”时并没有在谈论这些。新手可能希望使用验证器来确保他们没有犯任何新手错误,但是专业的开发人员不需要这样做,因为他们的代码已经“足够有效”,可以这么说。
冒犯君主

1

一些HTML验证错误可能会导致非显而易见的布局问题(例如,错误地嵌套/未关闭的标签),JavaScript错误(例如,使用id多次),以及某些用户的问题(例如,alt在图像上不包含有意义或空白的属性)。

如果我们所有的页面都通过验证,那么这是一个很好的自动检查,您可以排除错误源。如果您因为知道它们不会造成任何危害而留下一些验证错误,那么您的检查将不再自动进行:您必须查看每个错误,并记住可以。就个人而言,当计算机减少了我要做的工作而不是增加工作量时,我更喜欢它。


1

没有人提到的一点是未来浏览器的发展。尽管当今所有的浏览器都可以很好地处理无效标记,但情况并非总是如此。

将来,浏览器制造商将确保其浏览器符合HTML / XHTML标准,因此这也是Web开发人员应该追求的目标。仅仅因为无效标记的特定部分现在可以正常工作,并不保证它将在将来的浏览器中正常工作。


我不得不说我想知道这是否是真的。

2
是的,我看不到任何浏览器都停止支持该<font>标签或其标签。
DisgruntledGoat 2010年

我看不出问题是什么-对不赞成使用或无效的标记的支持将来可能会更改。忽略了大多数浏览器中(X)HTML的不完美实现,可以肯定,使用有效标记会更加安全。除了简单地知道您在做什么之外,与有效标记没有任何关系。
CJM

1

有效性可以帮助您避免不兼容性,并有助于保持代码的可维护性。浏览器从标记错误中恢复,但是有时以非常不直观的方式恢复。


  • 基于DTD(HTML4,XHTML1 @ W3C)—可能不值得。DTD是原始的,例如,无法检查大多数属性的有效性。您几乎会很难理解有关实体和嵌套的错误。

  • HTML5验证程序 - 。绝对是 HTML5更加实用,并且允许使用一些曾经是错误的无害构造。OTOH Henri的验证器在发现实际问题方面更加全面和出色。


JS生成的代码的有效性可能很重要,因为浏览器在DOM上运行,而不管其创建方式如何。如果您使用document.write(),那么您甚至还必须注意确保语法正确(它与页面源通过相同的解析器)。



0

Google和Bing不会,也不会,也永远不会使用CSS或HTML验证作为排名因素。

大多数网站都有数十到数百个错误,您不必担心,因为所有搜索引擎都在乎页面的呈现方式。只要确保您的网站在所有主要浏览器和Google的Fetch中都能正确显示即可。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.