我曾尝试搜索但未找到答案:
所以我知道,当页面传递给浏览器或由浏览器下载时,将生成该页面的树结构表示形式,称为DOM。然后可以使用Javascript操作此树的节点(代表元素的对象)。
因此,现在,如果我打开Chrome的开发者控制台并执行以下命令:
document.childNodes;
我得到了我所期望的,即两个节点,即DOCTYPE和html节点
[<!DOCTYPE html>, html]
如果我现在为html分配一个变量,然后像这样检查它的节点:
var htmlNode = document.childNodes[1];
htmlNode.childNodes;
发生了一些奇怪的事情:
我得到了预期的“head”节点,然后有一个“文本”节点,我不知道它来自哪里,最后是“body”节点。
[head, text, body]
我的问题是这个“文本”节点从哪里来?
最佳答案
尽管HTML指出html
元素通常只能包含head
和body
,但是当然可以在这些元素的任何开始标签和结束标签之间使用元素间空格。
在HTML DOM中,元素间空格始终分配到文本节点中。因此,大概是,您在head
和body
元素节点之间看到的文本节点是</head>
结束标记和<body>
起始标记之间的元素间空格。