El estándar DOM para el nodo #document (la raíz lógica de un documento DOM) permite exactamente un nodo de elemento (es decir, uno < HTML>), pero muchos nodos de comentarios (y otros tipos de nodo más esotéricos). Como tal, debemos esperar
document.lastChild
para ser el nodo de comentario que desee en esta instancia. Curiosamente, esto no funciona (al menos en Safari 4).
Poner un nodo de comentario antes de que el nodo HTML esté bien en mis pruebas. En este caso, document.childNodes.length es 2 y document.firstChild es el comentario. Al hacer un comentario después de que el nodo HTML parece insertarse en el lugar incorrecto en DOM - document.childNodes.length permanece en 1, y el nodo en el inspector DOM se ve como el último elemento secundario del nodo BODY. Sin embargo, ¡no puedo encontrar ese nodo usando la API DOM en absoluto!
Esto parece ser una rareza en (al menos) la implementación de DOM de Safari. Una prueba rápida con Firefox muestra que ni siquiera puede encontrar un nodo de comentarios si es la primera entrada en el documento.
Edit: OK, según el comentario de Aaron y reflexionando un poco más, es probable que el analizador de la página simplemente esté descartando los nodos durante el análisis. Ya no estoy seguro de que esto sea un error, pero no puedo encontrar nada en la especificación (XML) que permita a los analizadores descartar nodos de comentarios completos, solo su contenido textual.
En realidad son comentarios HTML – nickytonline