我一直并将继续关闭 HTML 输入,例如
<input type=text />
而不是非 XHTML 方式
<input type=text>
但我的问题是,无论哪种方式都会有任何可预见的问题,即跨浏览器、移动设备等?我刚刚注意到我使用的框架生成没有结束标记的输入,我讨厌我的代码和他们的代码之间存在差异。这真的很烦人和丑陋。
input
标签已经关闭了很长时间,几乎任何系统都应该能够在没有关闭的情况下处理它。如果您已将文档声明为 XHTML,则它不会验证标记是否未关闭,并且某些 XML 实用程序可能无法解析它,但 Web 浏览器被设计为在它们接受的内容方面非常自由。
就个人而言,我从未见过由于关闭 HTML 文档中的空标签而导致的跨浏览器问题。
但是,根据Refactoring HTML,旧版浏览器(例如 Netscape 3)将无法正确解析空元素。
这是因为在 SGML 和一些 HTML4 解析器中,支持类似于空标记语法的语法“ NET ”:(引自XHTML 被认为是有害的)
"/>" 空标签语法在 HTML4 中实际上具有完全不同的含义。(如果我没记错名字的话,它就是被称为 NET 的 SHORTTAG 最小化特性。)具体来说,XHTML
<p> Hello <br /> World </p>
...如果解释为 HTML4,则完全等同于:
<p> Hello <br>> World </p>
...并且应该真正呈现为:
Hello > World
因此,如果您使用的是 HTML4<!DOCTYPE>
并针对 Netscape 3,请不要这样做!但是如果您使用的是 HTML5(或 XHTML),关闭空标签并没有什么坏处——事实上,在 XHTML 中您必须这样做,否则 Tim Bray 会害死一只小狗。
有一个未关闭的输入标签仍然是有效的html,所以如果你不需要满足xhtml标准,你应该没问题。