Что считается текстовым узлом?
Как правило, если между тегами в HTML есть текст, он становится текстовым узлом. Тем не менее, это не всегда так. Рассмотрим этот пример:
<p>
<a href="hello.html">hello</a> <a href="world.html">world</a>
</p>
Здесь разрыв строки и 2 пробела между <p>
и первый <a ...>
не будет отображаться как текстовый узел в DOM, по крайней мере, в Chrome. hello
а также world
конечно будут текстовые узлы. Казалось бы, последовательности только пробелов не отображаются как текстовые узлы, но это не всегда так: в этом примере пространство между двумя ссылками является текстовым узлом.
Как Chrome решает, что станет текстовым узлом?
1 ответ
Попробуйте это в Chrome, и вы увидите firstChild
из p
является Text
:
let p = document.querySelector('p')
console.log(p.firstChild.constructor.name)
<p>
<a href="hello.html">hello</a> <a href="world.html">world</a>
</p>
Редактировать:
Кажется, вы даже не можете попробовать это в Chrome, поскольку он бросает "Uncaught SecurityError: Failed to read the 'localStorage' property from 'Window': The document is sandboxed and lacks the 'allow-same-origin' flag."
SO нуждается в обновлении их реализации фрагмента, поскольку это очевидно сломано в настоящее время.
Изменить 2:
Вы можете проверить это в Chrome здесь: https://codepen.io/anon/pen/qQPdbz?editors=1111