20

我现在正在构建一个站点,到目前为止,我已经痛苦地强迫所有内容都符合要求,并且它在浏览器中看起来几乎相同。但是,我开始实现一些第三方/免费的 javascript,它们执行诸如添加属性之类的操作(例如 order=2)。我可以解决这个问题,但这很痛苦,而且我开始失去确保一切都有效的原则。真的,解决这样的事情有什么意义吗?我得到了 Firefox 的 HTMLValidator 插件,并且查看了大多数主要网站(包括这个、谷歌等),它们不是有效的 XHTML 或 HTML。

4

11 回答 11

5

验证有助于确定事情何时未能达到您可能同意的标准。如果您有意使用专门添加验证标准之外的内容的工具,显然这不会违反您的个人标准协议。

如果您的老板或客户认为一切都应该重新开绿灯,那么这种讨论会变得更加困难,因为您必须向他们解释上述内容并说服他们不仅仅是您懒惰。

也就是说,请确保这不仅仅是您懒惰的情况。虽然验证器可能会烦人地不断提出第三方属性的每个实例,但这并不会使他们提到的其他验证错误无效(ha)。通常值得仔细检查一下您的工作。

于 2008-09-19T13:35:45.207 回答
4

标准合规性是关于增加您的页面在您未测试的浏览器中工作的机会。这包括屏幕阅读器、您测试的浏览器的下一次更新,以及您测试的浏览器,但用户以意想不到的方式配置了这些浏览器。

验证并不能保证任何事情,因为您的页面可能会验证但仍然足够模糊,以至于有一天它在某些浏览器上的行为方式不会像您希望的那样。

但是,如果您的页面确实通过了验证,那么您至少有 XHTML 规范的力量来说明它应该如何表现。如果它没有通过验证,那么你所拥有的只是浏览器编写者之间的一堆非正式约定。

编写有效的 HTML 3 可能比编写无效的 XHTML 更好,如果您想做的事情在一个中允许但在另一个中不允许。

于 2008-09-19T13:41:24.457 回答
3

如果您打算将 XHTML 用作 XML,那么让您的页面有效且格式良好是值得的。否则,您可能想要普通的旧语义 HTML。无论哪种方式,您的受众的需求都超过了验证者的需求。

于 2008-09-19T13:38:34.323 回答
2

请记住,XHTML 标记在大多数浏览器中的呈现方式与没有它时不同。DOCTYPE 属性确定浏览器呈现的模式,并规定什么是允许的,什么是不允许的。如果您偏离 XHTML 合规性,请务必在所有浏览器中重新测试。

就个人而言,我尽可能坚持最新标准,但你必须权衡时间/金钱与合规性,这取决于大多数人的个人喜好。

于 2008-09-19T13:33:50.093 回答
2

我还没有遇到过添加非标准属性导致任何浏览器出现渲染问题的情况。

不要试图绕过那些非标准属性。验证器作为工具可以方便地仔细检查您的代码是否存在意外错误,但众所周知,即使是完全有效的 xhtml 也不会总是在浏览器中一致地呈现。很多时候,设计决策要求我们使用特定于浏览器的(和非标准的)hack 来实现效果。这就是 Web 开发人员的生活,许多技术驱动的网站(谷歌、雅虎等)无法验证。

于 2008-09-19T14:19:27.800 回答
2

就浏览器而言,XHTML 合规性毫无意义:

  1. 浏览器没有 XHTML 解析器。它们具有非特定于版本的、与 Web 兼容的 HTML 解析器,围绕http://www.w3.org/1999/xhtml命名空间构建 DOM。

  2. 一些具有 XML 解析器的浏览器可以将作为 application/xhtml+xml 的 XHTML 标记视为 XML。这将采用 XML 并为http://www.w3.org/1999/xhtml命名空间中的元素提供默认的 HTML 样式和行为。但是,就解析而言,它与 XHTML 无关。遵循 XML 解析规则,而不是某些 XHTML DTD 的规则。

因此,当您使用 XHTML 标记时,您是在向浏览器提供一些陌生的东西,并查看它是否如您所愿。问题是,您可以使用任何标记来执行此操作。如果它按预期呈现并生成正确的 DOM,那么你做得很好。您只需要确保记住 DOCTYPE 切换并确保您不依赖浏览器错误(因此在没有错误的浏览器中事情不会崩溃)。

XHTML 合规性的好处是语法检查(通过验证)以查看标记是否格式正确。这有助于避免解析错误。当然,这也可以用 HTML 完成,所以在这种情况下 XHTML 没有什么特别之处。无论哪种方式,您仍然需要在浏览器中进行测试,并希望浏览器供应商能够制作出能够接受各种废话的出色 HTML 解析器。

试图符合浏览器的期望并不是没有意义的。HTML5 帮助了这个大时代。而且,说到 HTML5,您可以随心所欲地定义自定义属性。只需在它们前面加上 data-,就像在 <p data-order="This is a valid, custom attribute.">test</p> 中一样。

于 2008-11-11T10:26:54.310 回答
1

成为 HTML Valid 通常对您和浏览器渲染引擎都有帮助。浏览器必须处理的怪癖越少,它们就越能专注于添加新功能。你越严格,你花时间思考为什么这个 f@#cking 专有标签在其他浏览器中不起作用的时间就越少。

另一方面,恕我直言,XHTML 更没有意义,除非您打算将它集成到某个 XML 文档中。由于 IE 仍然无法识别它,因此坚持使用它是毫无用处的。

于 2008-09-19T13:35:51.243 回答
1

我认为编写“有效代码”很重要,仅仅是因为您正在通过遵循规则来树立榜样。如果每个开发人员都为 Fx、Safari 和 Opera 编写过代码,我认为 IE 必须比版本 8 更早地“开始遵循规则”。

于 2008-09-19T13:53:41.997 回答
0

我大部分时间都在尝试编写兼容的代码,在所有情况下权衡时间/成本与观众的需求,除了一种。如果您的代码需要符合 503 标准,那么编写符合标准的代码符合您的最大利益和受众的利益。我遇到了一堆屏幕阅读器,当代码稍微偏离时它们就会爆炸。

就像大多数海报所说的那样,这真的是关于你的观众需要什么。

于 2008-09-19T13:51:59.283 回答
0

无论如何,这并不是毫无意义的,但是有很多理由可以打破它。在 CSS 开发的初始阶段,如果您的标记有效,它对于诊断浏览器问题非常有用。除此之外,如果你想做某事并且你觉得最合适的方法是打破验证,那通常是可以的。

使用自定义属性的另一种方法是使用 'rel' 属性,例如,请参阅Litebox(及其亲属)。

于 2008-09-19T14:26:40.870 回答
0

当然,您总是可以继续以您想要的方式编写它,并确保它至少可以工作。当然,我们已经经历过这种心态,也见证了它的输出,Internet Explorer 6

我非常喜欢Mike Davidson 的面向标准的开发方法

仅仅因为您可以验证您的代码并不意味着您比其他任何人都好。哎呀,这甚至不一定意味着您编写的代码比其他任何人都好。可以完全在 Flash 中编写银行应用程序的人是比您更好的编码器。可以将第三方代码集成到复杂的发布环境中的人是比你更好的程序员。将验证视为使用图片完美语法;它可以帮助您传达您的想法,并且是良好教育的标志,但它并不像您想到并随后交流的想法和概念那么重要。我曾经为之工作过的最有魅力也可能是最聪明的人来自南方,并且经常使用“不是”这个词。这并没有让他变得更聪明,事实上,这让他更令人难忘。

很多人误解这篇文章的意思是我们不应该按照标准进行编码。显然,我们应该,但这甚至不应该被真正考​​虑。验证大军总是会谴责那些不验证的,但验证的意义远不止有效代码。

所以,不要失去你的原则,但请记住,如果你遵循标准,你在未来陷入深层次问题的可能性就会大大降低。您尝试提供的内容远比其显示方式重要得多。

于 2008-11-20T15:04:13.647 回答