Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

<tbody> tag displays in chrome but not source

In doing some scraping work I keep encountering the <tbody> tag in the Chrome DevTools inspector, but it doesn't appear in the source. For what I hope are obvious reasons, I find this super confusing. What's going on here? (I should also add that the html on this page is pretty malformed).

For example, DevTools shows:

<table>
    <tbody>
        <tr valign="top">
            <td>...</td>

Page source shows:

<table border="0">
    <tr valign="top">
        <td>
like image 676
AutomaticStatic Avatar asked Sep 06 '25 17:09

AutomaticStatic


1 Answers

The start tag for <tbody> is optional. That is, you can leave it out, but it is automatically inserted by the browser whenever needed.

And it is needed, because the rules say you can't have a tr directly in a table. The only children of a table element can be caption, colgroup, thead, tbody and tfoot.
So, if the browser encounters a tr outside a tbody, it inserts a tbody which the tr will reside in.

For a more formal way of saying this, see http://www.w3.org/TR/html-markup/tbody.html

By the way, the very same happens with other start tags, like <body>. If you omit that, writin, say, a <h1> directly after the </head>, the browser will insert an implied <body> automatically.

like image 189
Mr Lister Avatar answered Sep 09 '25 02:09

Mr Lister