javascript - sirve - ¿Puedo tener la etiqueta<SCRIPT> dentro de<TABLE>?
script type= text/javascript para que sirve (2)
Desde el lanzamiento de HTML 5, es legal tener un <script>
dentro de la mayoría de los tipos de elementos de tabla, incluyendo tr
s.
En https://html.spec.whatwg.org/multipage/tables.html , puede ver que los modelos de contenido para table
, caption
, tbody
, thead
, tfoot
, tr
, td
y th
incluyen todos "Contenido de flujo" o msgstr "uno o más elementos de soporte de script" . En https://html.spec.whatwg.org/multipage/dom.html#flow-content-2 y https://html.spec.whatwg.org/multipage/dom.html#script-supporting-elements-2 respectivamente, vemos que las script
se definen para que sean tanto contenido de flujo como elementos de soporte de secuencias de comandos y, por lo tanto, se permiten dentro de cualquiera de esos elementos.
Las excepciones notables son colgroup
s (que solo puede contener col
y template
s) y col
s (que no pueden tener contenido). No puedes poner un script
dentro de ninguno de esos.
Esto significa que el HTML de ejemplo del que pregunta con un script dentro de un tr
...
<TABLE>
<TR>
<SCRIPT></SCRIPT>
<TD>
</TD>
</TR>
</TABLE>
... ahora es válido, lo que puede confirmar en https://html5.validator.nu .
La respuesta de Gumbo , que indica que las script
están permitidas dentro de td
s pero no tr
s, fue correcta para HTML 4, pero ahora está desactualizada.
Tengo que tener una etiqueta dentro de una tabla porque PHP escribe un código allí que agrega cosas a una matriz de Javascript creada anteriormente. Sin embargo, me sale un error de validación (4.01 estricto).
¿Hay alguna forma en que pueda hacer esto o simplemente está prohibido guardar un script como este:
<TABLE>
<TR>
<SCRIPT></SCRIPT>
<TD>
</TD>
</TR>
</TABLE>
(¿Es esto mejor tal vez?):
<TABLE>
<TR>
<TD>
<SCRIPT></SCRIPT>
</TD>
</TR>
</TABLE>
Cambiar doctype? ¿Qué piensas?
SCRIPT
no está permitido en TR
ya que el modelo de contenido de TR
se define como (TH|TD)+
:
<!ELEMENT TR - O (TH|TD)+ -- table row -->
Eso significa uno o más elementos de TH
o TD
.
Pero SCRIPT
está permitido en TD
. Ver la definición de TD
:
<!ELEMENT (TH|TD) - O (%flow;)* -- table header cell, table data cell-->
Donde el parámetro entidad flujo se define como:
<!ENTITY % flow "%block; | %inline;">
Y en inline se define como:
<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">
Y special se define como:
<!ENTITY % special
"A | IMG | OBJECT | BR | SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO">