Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.2k views
in Technique[技术] by (71.8m points)

html - <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>
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...