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

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

 lesderid16 мар. 2013 г., 12:20
Это раздражало менятак много когда я пытался сравнить мой HTML-парсервывод на Firefoxс HTML.
 Dan Blows29 янв. 2012 г., 17:40
(Из @baptx): странная вещь заключается в том, что создание таблицы без tbody с использованием javascript createElement / appendChild не добавит tbody, но с помощью innerHTML это сделает. Зачем? Я'задавал вопрос здесь:stackoverflow.com/questions/9053572/...
 Ciro Santilli 新疆改造中心996ICU六四事件20 июл. 2014 г., 13:30

Ответы на вопрос(5)

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

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

 bobince05 нояб. 2009 г., 10:21
Обратите внимание, что этот случай отличается для XHTML 1.0, потому что странный SGMLначальный тег необязателен » функция не существует в XML (к счастью). В этом случае модель контента включает(tbody+|tr+): вы можете использовать тритоны или голые трэсы, но вы можетесмешивать их В режиме синтаксического анализа XML-файлов Firefox не должен добавлять подразумеваемыеtbody элемент.
 Alohci05 нояб. 2009 г., 11:26
@paxdiablo, верно. Но тогда ответ заключается в том, что Firebug нет изображатьтегс, это изображаетэлементs. Тег необязателен, элемент - нет. (Вопрос сейчас, нене использовать слово "тег" или же "элемент", но это'отредактировано, так что, возможно, это было сделано изначально.)
 shylent05 нояб. 2009 г., 06:57
Хотя этот ответ не самый юмористический или остроумный,правильный один.
 paxdiablo05 нояб. 2009 г., 07:47
Этоне правильный ответ на все. Если ты'Если вы перейдете по ссылке на стандарт, а затем прокомментируете его, вы можете убедиться, что ваш комментарий правильный.стандарт состояния: "TBODY начальный тег необязательный, конечный тег необязательный " а также "Стартовый тег TBODY всегда требуется, за исключением случаев, когда таблица содержит только одно тело таблицы и не содержит ни заголовка, ни ножки. Конечный тег TBODY всегда можно опустить ".
 bobince05 нояб. 2009 г., 10:14
Что это "начальный тег необязательный » средства, Вы можете опустить стартовый тег, но анализатор HTML все равно должен подразумевать, что элемент есть. Контентная модельtable является(CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+); нотаtr являетсяне в этом списке. Это'как когда забываешь, синтаксический анализатор будет подразумевать это, как только вы используете такой элемент, как это должно быть в теле.
 paxdiablo05 нояб. 2009 г., 11:04
@bobince, подразумевает ли это анализатор или нет,тег не является обязательным. Был задан вопрос, почему появился тег.

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

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

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

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

 deceze05 нояб. 2009 г., 06:42
Что касается "Зачем": Таблицы должны иметьTBODYОгненный Фокс внутренние работыхочу быть там, Если ты'не указывать это явно, этосоздам его самостоятельно, потому чтохочет, чтобы один был там, Даже если ты'Вы хорошо едите с пола, выза столом, потому что официантхочет, чтобы был стол, ; О)
 paxdiablo05 нояб. 2009 г., 07:49
@ deceze, этоFirefox решает это. Стандарт W3C гласит, что такая штука не обязательна, если у вас нет команды или команды.
 micahwittman22 дек. 2009 г., 04:59
Сильно вернемся вперед в интерпретации стандартов. Похож на многолетнее растение: должен <T-Pain> всегда быть завернутым в <АВТОНАСТР.ВКЛ>? ;)
 deceze05 нояб. 2009 г., 10:05
@paxdiabolo: Это может быстро перейти в тонкую семантику, но: стандарттребует использование ,TBODYкроме когда это'Очевидно, что единственные данные в таблицеявляется TBODY (перефразировано, согласно вашему собственному комментарию на ответ Киерона). Это звучит как довольно сильное поощрение для меня, и ИМХО можно резюмировать с "должен быть там ".
 CMS05 нояб. 2009 г., 06:23
Это не Firefox, а Gecko: P
 paxdiablo05 нояб. 2009 г., 11:06
Если стандарт говорит, что это не такне должно быть там, это недолжно быть там. Период. То, что люди или браузеры делают вывод, не имеет значения. Утверждение, что таблицы "должен быть написан с <TBODY>» явно неверно. Стандарт говорит этонеобязательно.
 deceze05 нояб. 2009 г., 12:49
Очевидно, что стандарт можно читать в обоих направлениях. Факт являетсяэлемент существует идолжен использоваться, но егодекларация может быть пропущена если там'нет никакой двусмысленностивнутренне браузер просто всегда предполагает этоs там, потому что это делает реализацию легче. Если поэто нетам должно быть ты имеешь в виду "егоявная декларация можно пропуститьтогда я согласен.элемент хотя всегда должен быть неявно там, и это 'что тысмотрите в Firebug. Дон»Не путайте разметку с интерпретированным результатом.
 Mask05 нояб. 2009 г., 06:18
Тем не менее, почему он это делает?
 deceze05 нояб. 2009 г., 13:08
"необязательный" Часть хитрая, так как это зависит от интерпретации. Вы'ошибаться на сторонепропустить если не нужно, но технически более простой выбор для браузераподразумевать, если отсутствует, A Standard ™ ® открыт для толкования ?! О нет, остановите прессы! ; О)

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

НЕОБХОДИМО использовать явные элементы tbody в таблицах.

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

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

Ваш ответ на вопрос