Подтвердить что ты не робот

Почему firebug добавляет <tbody> в <table>?

Я просмотрел исходный код html, нет <tbody>, но при просмотре через firebug на вкладке HTML появляется <tbody>. Любая идея почему?

4b9b3361

Ответ 1

Подводя итог отличным объяснениям, приведенным в ответах и ​​комментариях Бобинджа, Кирона, Алохчи и других:

  • Firebug просто отображает DOM проанализированной страницы. Из-за сложных правил разбора HTML DOM будет "отличаться" (в некотором смысле) от исходного HTML.
  • В этом случае элемент TBODY в DOM добавляется парсером HTML. Обратите внимание, что этот странный разбор ограничен документами text/html, а в XHTML DOM тесно связан с исходным XML.
    • Это поведение было указано в HTML 4. Модель контента (разрешенные дочерние элементы) для table равна (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+) - tr разрешена только в TBODY! Спектр говорит, что TBODY начальный тег является необязательным, что должно означать, что если парсер HTML встречает tr непосредственно внутри table, он вставляет тег TBODY, опущенный автором.
    • Чтобы сделать более понятным, HTML 5 определяет очень подробные правила синтаксического анализа, в частности для этого случая: "Когда режим вставки" в таблице "", токены должны обрабатываться следующим образом: [...] Начальный тег, имя тега которого является одним из следующих: "td", "th", "tr" → действовать так, как если бы токен начального тега с именем тега" tbody "" был замечен, затем переработал текущий токен".

Ответ 2

Это не firebug, а firefox, который делает это. Это то, как таблицы должны быть записаны с помощью <TBODY> отдельно от метаданных, таких как <COLGROUP>. Firefox просто вставляет теги <TBODY>, когда он их не видит.

Ответ 3

Firefox добавляет их, потому что стандарт говорит об этом.

TABLE на самом деле не разрешено напрямую содержать элементы TR, они должны содержаться в THEAD, TFOOT или TBODY. Но для простоты и обратной совместимости начальный тег TBODY может быть опущен "когда таблица содержит только одно тело таблицы, а не таблицы или секции стопы"; в этом случае элемент выводится браузером.

Ответ 4

Он не добавлен firebug, он добавлен Firefox. Firebug дает вам то, что выглядит в действительности. Если вы просматриваете различные элементы dom, вы заметите, что Firefox добавил некоторые из его собственных элементов стиля.

Ответ 5

A.19. Явные элементы

DO использовать явные элементы tbody в таблицах.

Обоснование. Хотя модель содержимого элемента таблицы позволяет пропустить элемент tbody, в HTML 4 этот элемент неявный. Пользовательские агенты HTML 4 молча добавят этот элемент, что может привести к запутыванию сценариев или таблиц стилей.

Источник: http://www.w3.org/TR/2009/NOTE-xhtml-media-types-20090116/#compatGuidelines