Стандарт DOM для узла #document (логический корень документа DOM) допускает ровно один узел элемента (то есть один ), но множество узлов комментариев (и других, более эзотерических типов узлов). Таким образом, мы должны ожидать
document.lastChild
будет узлом комментария, который вы хотите в этом случае. Как ни странно, это не работает (по крайней мере, в Safari 4).
Поместить узел комментариев до узла HTML в моих тестах нормально. В этом случае document.childNodes.length равен 2, а document.firstChild является комментарием. Помещение комментария после того, как узел HTML кажется вставленным не в том месте в DOM - document.childNodes.length остается равным 1, а узел в инспекторе DOM рассматривается как последний дочерний элемент узла BODY. Однако я не могу найти этот узел, использующий DOM API!
Кажется, это странность (по крайней мере) в реализации Safari для DOM. Быстрый тест с использованием Firefox показывает, что он даже не может найти узел комментария, если это первая запись в документе!
Редактировать: ОК, согласно комментарию Аарона и некоторым размышлениям, вполне вероятно, что анализатор страницы просто отбрасывает узлы во время синтаксического анализа. Я больше не уверен, что это ошибка, но я не могу найти в спецификации (XML) ничего, что позволяло бы анализаторам отбрасывать целые узлы комментариев - только их текстовое содержимое.