Я просмотрел исходный код html, нет <tbody>
, но при просмотре через firebug на вкладке HTML появляется <tbody>
. Любая идея почему?
Почему firebug добавляет <tbody> в <table>?
Ответ 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 "" был замечен, затем переработал текущий токен".
- Это поведение было указано в HTML 4. Модель контента (разрешенные дочерние элементы) для
Ответ 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