[whatwg] On tag inference

Lachlan Hunt lachlan.hunt at lachy.id.au
Mon Sep 5 07:46:07 PDT 2005


Henri Sivonen wrote:
> On Sep 5, 2005, at 13:10, Lachlan Hunt wrote:
> 
>> Henri Sivonen wrote:
>>> My tentative assumption has been
>>> <!DOCTYPE html>
>>> <html><head><title>...</title>
>>> </head><body><section>...</section>
>>> <div>...</div></body></html>
>>
>> That is how I would recommend it be defined.  It's not what Firefox 
>> does (that's the easiest browser to get the DOM source from)
> 
> That's weird.
> 
> I tested http://hsivonen.iki.fi/test/inference/section.html in Mozilla 
> 1.7.5 and Safari 1.3 and in both cases SECTION appears as the first 
> child of body. (A DOM viewer for Opera would be nice. :-)

Ok, it seems Gecko has changed behaviour between Firefox 1.0.6 and Deer 
Park Alpha 2.  I incorrectly assumed they'd be the same and just wrote 
firefox out of habit.  However, for your test case, these are the 
results for all browsers I could test:

Firefox 1.0.6:
<html><head><title>...</title></head>

<body><section>...</section>
<div>...</div></body></html>


Deer Park Alpha 2:
<html><head><title>...</title>

<section></section></head><body>...
<div>...</div></body></html>


Opera 8.02:
<HTML><TITLE>...</TITLE><BODY><section>...</section>
<DIV>...</DIV></BODY></HTML>


IE7 Beta 1:
<HTML><HEAD><TITLE>...</TITLE><SECTION></HEAD>
<BODY>...</SECTION>
<DIV>...</DIV></BODY></HTML>

(That's very wierd, IE just loves producing broken DOMs! :-/  I assume 
IE6 will produce a similar result, though I don't have it available to test)


Netscape 4.75:

Note: I couldn't actually get the DOM, but from the output, I think it's 
safe to assume the DOM is generated as something like this:

<html><head><title>...</title>
<section>...</section>
</head><body><div>...</div></body></html>

Netscape only output the content of the <div> and left the contents of 
the head hidden.  Therefore, since the <section> element wasn't output, 
it must have been within the <head>.  However, when I inserted a <body> 
start-tag before it, or moved the section after the <div>, then it's 
content was output.

For Opera and IE, I used this bookmarklet to output the innerHTML of 
<html>, then just added the <HTML> and </HTML> manually.

javascript:function go() {var pre = document.createElement("pre");var 
text=document.createTextNode(document.documentElement.innerHTML);pre.appendChild(text);document.body.appendChild(pre);};go();

-- 
Lachlan Hunt
http://lachy.id.au/




More information about the whatwg mailing list