省略和标记是否安全?

时间:2010-10-26 02:58:29

标签: html html-table w3c

根据w3c </TD></TR>标记是可选的,因此下表完全有效。

<table>
  <tr>
    <td>google
    <td>chrome
</table>

我测试过的所有浏览器都能很好地呈现表格。我只是想问一下这通常被认为是安全的,或者如果我无法访问的旧浏览器会导致问题。感谢。

它减少了包含许多表格的页面上的gzip html大小。

10 个答案:

答案 0 :(得分:20)

这是有效的HTML但无效的XHTML 它本质上没有任何错误。

如果您查看Google's privacy policy(或其他任何页面)的来源,您会发现一些更为简洁的HTML。

这确实意味着XML解析器无法使用您的页面。

答案 1 :(得分:19)

这是安全的,因为标准中的可选性意味着所有浏览器(至少是那些甚至远程重要的浏览器)都会实现这一点 - 并且浏览器标准合规性通常会向相反的方向运行,以便尝试正确使用甚至是无效的HTML,而不是缺少可选的标签。

话虽如此,我发现省略这些标签会让事情变得更难阅读,如果目标是尺寸优化,这对您来说可能或不重要。

P.S。另外,如果你有非常大的表,我想知道在处理这样的结构时浏览器的HTML解析器是否会产生任何开销?我不确定没有基准测试或真正深入思考HTML解析器如何工作的细节,但如果发生这种情况可能会成为一个因素。

答案 2 :(得分:10)

我强烈建议不要这样做,尽管 在HTML4(和5)中有效。与您承担的技术债务相比,带宽节省微不足道。另请注意,它在XHTML中无效,因此请确保您的doctype设置正确。

答案 3 :(得分:8)

从一开始就有HTML中的可选标签 - 它们是从SGML继承的功能,因此早期的浏览器必须能够处理它们。虽然XHTML远离此并且需要更加统一的语法,但除非您明确告诉浏览器在XML模式下进行解析,否则这不会对您产生影响。我在使用HTML 4/5的标准解析器时从未发现过任何问题。

由于HTML5 so carefully描述了某些标签何时是可选的,我会读到这意味着有人进行了大量测试,以确保在这些情况下,大多数浏览器都会生成相同的文档树。

虽然节省的空间可以忽略不计,但我发现,<p><li><td><tr>的结束标记只会让我的生活变得更轻松我正在使用标记,这使我不太可能犯错误。

答案 4 :(得分:2)

我个人认为这不是好习惯。看看规范它并没有提供大量的信息。我知道它是XHTML所必需的所以我查阅了HTML 5规范。 HTML 5似乎与HTML 4一样,它是你链接到的,但是给了a little more information

  

如果td元素紧跟td或th元素,或者父元素中没有更多内容,则可以省略td元素的结束标记。

答案 5 :(得分:1)

我建议永远关闭你的标签。没有理由不太好。浏览器可以处理一些不正确的封闭标签,但只是为了安全起见(这是一个很好的编程习惯!),关闭你的标签!

答案 6 :(得分:0)

关闭HTML中的所有代码,原因如下:

  1. 不容许关闭标签,但现代XHTML不正确。它的弃用程度与HTML样式属性支持CSS
  2. 的方式相同
  3. 如果你关闭标签,它对下一个人来说更具可读性
  4. 如果更严格地遵守规则,浏览器实际上会更容易解析您的来源,即使这会使来源更长

答案 7 :(得分:0)

当然,如果你只使用HTML,绝对没有问题,不是XHTML的情况,但我不认为你可以得到那么多,我也建议不要滥用表格记住div比表格更好

答案 8 :(得分:-4)

静态页面不适用于动态页面......可以调试

答案 9 :(得分:-5)

如果可能,您应该关闭<TR><TD>标签,但不要总是因为在某些情况下可能会打扰您。这是因为<TR><TD>标记可以设置为display:none,而</TR>标记则不能。这意味着如果使用</TR>,您希望使用媒体查询扩展/限制显示的方案将失败。请考虑以下代码:

<style>
@media (max-width : 480px) {
.hidden-class {display:none;}
}
</style>

<table>
   <tr>
      <td>cell 1</td>
   </tr class="hidden-class">  <!-- this will fail! -->
   <tr class="hidden-class">
      <td>cell 2</td>
   </tr>                       <!-- this could stay -->
</table>

这意味着您可以将其写为:

 <table>
   <tr>
      <td>cell 1</td>
   </tr>  <!-- this will now close the TR for every screen width, which will destroy your extenstion -->
   <tr class="hidden-class">
      <td>cell 2</td>
   </tr>                       <!-- this could stay -->
</table>

这意味着唯一的方法是首先通过OMITTING THE:

     <table>
   <tr>
      <td>cell 1</td>
   <tr class="hidden-class">
      <td>cell 2</td>
   </tr>                       <!-- this could stay -->
</table>