我正在建立一个网站,到目前为止,我已经费了很大的力气使所有东西都符合规范,并且在各种浏览器中看起来几乎相同。然而,我开始使用一些第三方/免费的JavaScript代码,例如添加属性(例如order=2)。我可以解决这个问题,但很麻烦,而且我开始失去确保一切有效的原则。实际上,绕过这样的问题有什么意义吗? 我下载了Firefox的HTMLValidator插件,并查看了大多数主要网站(包括此网站、Google等),它们并不是有效的XHTML或HTML。
我正在建立一个网站,到目前为止,我已经费了很大的力气使所有东西都符合规范,并且在各种浏览器中看起来几乎相同。然而,我开始使用一些第三方/免费的JavaScript代码,例如添加属性(例如order=2)。我可以解决这个问题,但很麻烦,而且我开始失去确保一切有效的原则。实际上,绕过这样的问题有什么意义吗? 我下载了Firefox的HTMLValidator插件,并查看了大多数主要网站(包括此网站、Google等),它们并不是有效的XHTML或HTML。
标准合规性是为了增加您的页面在您没有测试过的浏览器中的工作机会。这包括屏幕阅读器和您测试过的浏览器的下一个更新,以及那些您进行了测试但用户已经以意想不到的方式配置的浏览器。
验证并不能保证什么,因为您的页面可能会验证通过,但仍然存在足够含糊不清的情况,使得它在某一天无法按照您预期的方式在某些浏览器上运行。
然而,如果您的页面确实验证通过,至少有XHTML规范说明它应该如何行事。如果它没有验证通过,那么您只有一堆浏览器作者之间的非正式约定。
如果您想做一些在其中一个中允许但在另一个中不允许的事情,那么写有效的HTML 3可能比写无效的XHTML更好。
请记住,与没有使用XHTML标签相比,大多数浏览器中的XHTML标记呈现形式不同。DOCTYPE属性确定了浏览器呈现模式,并决定了什么是允许的和不允许的。如果你偏离XHTML合规性,一定要在所有浏览器中重新测试。
个人而言,我尽可能遵循最新的标准,但你必须权衡时间/金钱和合规性,这最终取决于个人偏好。
我从未遇到过添加非标准属性导致任何浏览器渲染问题的情况。
不要试图规避那些非标准属性。验证器是一个方便的工具,用于检查代码的无意错误,但我们都知道,即使是完全有效的xhtml也不会在所有浏览器上始终以相同的方式呈现。有许多时候,设计决策要求我们使用特定于浏览器(非标准)的技巧来实现效果。这就是网页开发人员的生活,如谷歌、雅虎等驱动站点所示,它们不符合验证标准。
不是毫无意义的是尝试符合浏览器的期望。HTML5在这方面大有帮助。而且,说到HTML5,您可以随心所欲地定义自定义属性。只需使用data-作为前缀,例如<p data-order="This is a valid, custom attribute.">test</p>。
成为HTML有效通常有助于您和浏览器渲染引擎。浏览器处理的怪癖越少,它们就越能专注于添加新功能。您越严格,您花费在想知道为什么这个该死的专有标记在其他浏览器中不能工作的时间就越少。
另一方面,XHTML,依我之见,除非您计划将其集成到某些XML文档中,否则更加无意义。由于IE仍然不认识它,因此坚持使用它是相当无用的。
我认为编写“有效代码”很重要,因为你通过遵循规则树立了榜样。如果每个开发人员都为Fx、Safari和Opera编写了代码,我认为IE不得不比8版更早地“开始遵循规则”。
当然,你可以随心所欲地编写代码,确保至少它能够工作。但是,我们已经遭受了这种心态并见证了它的产出,比如Internet Explorer 6。
我是Mike Davidson标准导向开发方法的忠实粉丝。
仅因为您可以验证代码并不意味着您比其他人更优秀。实际上,这甚至不一定意味着您编写的代码比其他人更好。能够完全使用Flash编写银行应用程序的人比您更好的编码者。能够将第三方代码集成到复杂的出版环境中的人比您更好的编码者。将验证视为使用完美语法;它有助于您传达您的想法,并且是良好教育的标志,但它并不像您所想象的那样重要,即您所想象和随后传达的思想和概念。我曾经为之工作过的最具魅力和可能最聪明的人来自南方,经常使用“ain't”这个词。这并没有使他变得不那么聪明,事实上,这使他更加难忘。所以我想说的是,有很多事情可以评判一个人...验证只是其中之一,但绝对不是最重要的。我通常会尽力编写符合标准的代码,权衡时间/成本与受众需求,但有一种情况除外。如果您的代码需要符合503标准,编写符合标准的代码符合您和您的受众的最佳利益。我遇到过很多屏幕阅读器在代码稍微偏离标准时就会出现问题。
正如大多数帖子所说,这真的取决于您的受众需要什么。