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

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

5 ответов

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам