[whatwg] document.head
Juriy Zaytsev
kangax.dev at gmail.com
Sun Sep 20 20:51:36 PDT 2009
On Sep 20, 2009, at 10:29 PM, Garrett Smith wrote:
> On Sun, Sep 20, 2009 at 2:47 PM, Michael A. Puls II
> <shadow2531 at gmail.com> wrote:
>> On Sun, 20 Sep 2009 16:15:11 -0400, Joseph Pecoraro <joepeck02 at gmail.com
>> >
>> wrote:
>>
>>> On Sep 20, 2009, at 3:57 PM, Michael A. Puls II wrote:
>>>>
>>>> I think it'd be cool to have to complement
>>>> document.documentElement and
>>>> document.body.
>>>
>>> On Sep 20, 2009, at 4: 00PM, Juriy Zaytsev wrote:
>>>>
>>>> Surely better than abominable –
>>>> `document.getElementsByTagName('head')[0]` :)
>>>
>>> I agree. Unfortunately that is the most popular method I've seen.
>>> There
>>> are better solutions, but they haven't caught on. I think a
>>> smarter idea
>>> would be to look at the children of the <html> element. Something
>>> like this
>>> almost always works:
>>>
>>> var head = document.documentElement.firstChild
>>
>> It wasn't very long ago though that in Opera for example, head wasn't
>> guaranteed to be the first child of the documentElement. But,
>> that'll work
>> now and is pretty good.
>>
>
> The documentElement.firstChild cannot be expected to be head. It could
> be a text node. For example:-
>
> <html>
> <head>
> ...
>
> the first child node of HTML looks like a textNode with the value
> "\n\n\u0020\u0020".
>
> document.getElementsByTagName("head")[0] could be expected to produce
> (in a valid HTML document) a result that is more consistent than
> document.firstChild.
That was exactly my thought when `firstChild` was mentioned here first
time. I was suspecting IE to return textnode but couldn't reproduce it
in either 6, 7 or 8. I also tried inserting comment in between:
<html>
<!--// foo -->
<head>
...
but HEAD was still reported as first child.
FWIW, looking at HTML's DTD, it seems that HEAD and BODY tags should
always be in this exact order - <http://www.w3.org/TR/html4/struct/global.html#h-7.3
>
--
kangax
More information about the whatwg
mailing list