Ответ 1
Начиная с выпуска HTML 5, законно иметь <script>
внутри большинства видов элементов таблицы, включая tr
s.
В https://html.spec.whatwg.org/multipage/tables.html, вы можете увидеть, что модели содержимого для table
, caption
, tbody
, thead
, tfoot
, tr
, td
и th
все включают в себя либо "содержание потока" или msgstr "один или несколько элементов, поддерживающих скрипт". На https://html.spec.whatwg.org/multipage/dom.html#flow-content-2 и https://html.spec.whatwg.org/multipage/dom.html#script-supporting-elements-2 соответственно, мы видим, что script
определяется как содержимое потока и элементы, поддерживающие сценарий, и поэтому разрешен в любом из этих элементов.
Заметными исключениями являются colgroup
(которая может содержать только col
и template
s) и col
(которые не могут иметь содержимое). Вы не можете поместить script
внутри любого из них.
Это означает, что запрашиваемый пример HTML со скриптом внутри tr
...
<TABLE>
<TR>
<SCRIPT></SCRIPT>
<TD>
</TD>
</TR>
</TABLE>
... теперь действует, что вы можете подтвердить по адресу https://html5.validator.nu.
Гамбо-ответ о том, что script
разрешен внутри td
но не tr
s, был верным для HTML 4, но сейчас устарел.