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