Представление DOM документа в HTML: родственные текстовые узлы
Я прочитал это заявление от @Bergi в очень старом комментарии, обсуждающем nextSibling
значение:
x.nextSibling, скорее всего, будет не диапазоном, а текстовым узлом разрыва строки между элементами img и span
Пример, на который ссылался @Bergi, представлял собой некоторый скрипт для выбора первого элемента в довольно простом HTML и поиска nextSibling
:
<img src="something">
<span>
Вставляют ли браузеры "текстовый узел разрыва строки" в DOM между узлами элемента? Что я действительно пытаюсь понять, так это комментарий в старом обсуждении о сериализации модели документа в HTML с помощью ProseMirror:
HTML почти всегда можно использовать для полного представления документа DOM. Есть одно исключение, с которым мы столкнулись: родственные текстовые узлы. Перед использованием ProseMirror мы обнаружили, что важно иметь одинаковые текстовые узлы, поэтому мы сериализуем HTML в JSON для хранения в базе данных. Мы по-прежнему делаем это сейчас, по соображениям совместимости, но, учитывая, что нам больше не нужны родственные текстовые узлы, это, скорее всего, исчезнет в следующей версии нашего формата файла.
Остальная часть обсуждения в этой теме была обширной и не имела отношения к этому вопросу, поэтому я не связывал ее. Я думаю, что причина, по которой этот автор говорит, что HTML не может зеркально отражать DOM в случае одноуровневых текстовых узлов, заключается в том, что узлы разрыва строки автоматически вставляются в DOM (и не представляются в HTML). Это точно?
1 ответ
Я думаю, что понятие "скрытых персонажей", которое вы упоминаете, не является точным. Дело в том, что nextSibling возвращает буквально следующего родного брата в dom, что не означает, что он будет следующим элементом в dom. Если вы хотите попробовать, удалите все символы разрыва строки и попробуйте снова, или просто используйте nextElementSibling.