Что считается текстовым узлом?

Как правило, если между тегами в 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

Другие вопросы по тегам