¿Es seguro omitir y etiquetar?


Según w3c </TD> y las etiquetas </TR> son opcionales, por lo que la siguiente tabla es perfectamente válida.

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

Y todos los navegadores que he probado con renderizar la tabla bien. Solo quería preguntar si esto se considera generalmente seguro de usar, o si los navegadores más antiguos, a los que no tengo acceso, causan problemas. Gracias.

Reduce el tamaño html de gzip en una página con muchas tablas en un pequeño porcentaje.

Author: Brian Tompsett - 汤莱恩, 2010-10-26

10 answers

Es seguro, ya que la opcionalidad en el estándar significa que todos los navegadores (al menos los que importan remotamente) habrían implementado esto, y el cumplimiento de los estándares del navegador generalmente se ejecuta en el lado opuesto, tratando de funcionar correctamente incluso con HTML no válido en lugar de fallar en las etiquetas opcionales faltantes.

Dicho esto, encuentro que omitir tales etiquetas hace que las cosas sean más difíciles de leer, lo que puede o no importarle si el objetivo es el tamaño optimización.

P.d. También, si usted tiene tablas muy grandes, me pregunto si hay alguna sobrecarga incurrida por el analizador HTML del navegador cuando se trata de tales construcciones? No estoy seguro sin benchmarking o pensar muy profundamente en cómo funciona el analizador HTML en detalle, pero es algo que posiblemente podría ser un factor si sucede.

 17
Author: DVK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-26 03:03:50

Esto es HTML válido pero XHTML no válido.
No hay nada intrínsecamente malo en ello.

Si nos fijamos en la fuente de Política de privacidad de Google (o cualquiera de sus otras páginas), encontrará un HTML mucho más conciso.

Significa que su página no será utilizable por un analizador XML.

 19
Author: SLaks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-26 03:01:31

Recomiendo encarecidamente no hacer eso, aunque es válido en HTML4 (y 5). El ahorro de ancho de banda es minúsculo en comparación con la deuda técnica que está incurriendo. También tenga en cuenta que no es válido en XHTML, así que asegúrese de que su doctype esté configurado apropiadamente.

 10
Author: Andrew Barber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-26 16:20:45

Ha habido etiquetas opcionales en HTML desde el principio: son una característica heredada de SGML, por lo que los primeros navegadores deben haber sido capaces de lidiar con ellas. Si bien XHTML se alejó de esto y requirió una sintaxis mucho más uniforme, esto no le afecta a menos que le indique explícitamente al navegador que analice en modo XML. Nunca he visto un problema al usar los analizadores estándar de HTML 4/5.

Dado que HTML5 tan cuidadosamente describe cuándo ciertas etiquetas son opcionales, I leería que implica que alguien hizo un montón de pruebas para asegurarse de que en estos casos, la mayoría de los navegadores producen el mismo árbol de documentos.

Y mientras que el ahorro de espacio es insignificante, me parece que dejando fuera de las etiquetas de cierre de <p>, <li>, <td>, y <tr> simplemente hace mi vida más fácil cuando estoy trabajando en el marcado, y me hace menos probable que cometa un error.

 8
Author: Josh Lee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-26 03:25:18

Personalmente no lo considero una buena práctica. Mirando las especificaciones no dio mucha información. Sé que es necesario para XHTML, así que busqué la especificación HTML 5. HTML 5 parece tener la misma visión que HTML 4, que es lo que has vinculado, pero da un poco más de información :

La etiqueta final de un elemento td puede omitirse si el elemento td es inmediatamente seguido por un elemento td o th, o si no hay más contenido en el padre elemento.

 2
Author: McAden,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-26 03:13:29

Aconsejo siempre cerrar sus etiquetas. No hay una buena razón para no hacerlo. Los navegadores pueden manejar algunas etiquetas incorrectamente cerradas, pero solo para estar seguros (¡y es una buena práctica de programación!), cierre sus etiquetas!

 1
Author: Kevin Hwang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-26 03:06:10

Cierra todas las etiquetas en HTML por algunas razones:

  1. No se tolera el cierre de etiquetas, pero no es correcto XHTML moderno. Está en desuso de la misma manera que los atributos de estilo HTML están a favor de CSS
  2. Es más legible para el siguiente chico si cierras las etiquetas
  3. Los navegadores realmente tendrán un tiempo más fácil de analizar su fuente si se adhiere más estrictamente a las reglas, incluso si eso hace que la fuente sea más larga
 0
Author: Rafe Kettler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-26 03:05:00

Ciertamente, si usted está utilizando solo HTML no hay absolutamente ningún problema que no es el caso con XHTML sin embargo, no creo que se puede conseguir que mucho, también sugiero no abusar tablas recuerde div son mejores que las tablas

 0
Author: Necronet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-26 03:11:11

Está bien con Páginas Estáticas no para Páginas Dinámicas {para depurar

 -3
Author: Sagar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-26 06:18:34

Debe cerrar sus etiquetas <TR> y <TD> si es posible, pero NO SIEMPRE porque en algunos escenarios puede molestarle. Esto se debe a que las etiquetas <TR> y <TD>podrían tener el estilo display:none mientras que la etiqueta </TR> no podría. Esto significa que un escenario en el que desee extender / limitar su visualización con consultas de medios, fallará si usa </TR>. Considere el siguiente código:

<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>

Significa que lo escribirías como: {[11]]}

 <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>

Lo que significa que la única manera de hacerlo es mediante OMITIENDO EL en primer lugar:

     <table>
   <tr>
      <td>cell 1</td>
   <tr class="hidden-class">
      <td>cell 2</td>
   </tr>                       <!-- this could stay -->
</table>
 -4
Author: PalDev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-01 23:22:22