Извлечение текста из HTML с сохранением новых строк элементов уровня блока

Фон

Наиболеевопросы об извлечении текста из HTML (т.е.демонтаж теги) использовать:

jQuery( htmlString ).text();

Хотя это абстрагирует браузерные несоответствия (такие какinnerText противtextContent), вызов функции также игнорирует семантическое значение элементов уровня блока (таких какli).

проблема

Сохранение новых строк элементов уровня блока (то есть семантического намерения) в различных браузерах требует немалых усилий, так какМайк Уилкокс описывает.

Казалось бы, более простым решением было бы эмулировать вставку содержимого HTML в, который удаляет HTML, сохраняя при этом новые строки элемента уровня блока. Однако вставки на основе JavaScript не запускают те же процедуры преобразования текста в текст, которые используют браузеры, когда пользователи вставляют содержимое в.

Я также пытался интегрировать Майк УилкоксКод JavaScript, Код работает в Chromium, но не в Firefox.

Вопрос

Какой самый простой кросс-браузерный способ извлечения текста из HTML при сохранении семантических новых строк дляэлементы уровня блока используя jQuery (иливанильный JavaScript)?

пример

Рассматривать:

Выберите и скопируйте весь этот вопрос.Откройстраница примера textarea.Вставьте содержимое в текстовое поле.

Текстовая область сохраняет новые строки для упорядоченных списков, заголовков, предварительно отформатированного текста и т. Д. Это результат, которого я хотел бы достичь.

Для дальнейшего уточнения предоставляется любой HTML-контент, такой как:

   Header
   <p>Paragraph</p>
   
     First
     Second
   
   
     Term
       Definition
   
   Div with <span>span</span>.<br>After the <a href="...">break</a>.

Как бы вы произвели:

  Header
  Paragraph

    First
    Second

  Term
    Definition

  Div with span.
  After the break.

Примечание: ни отступ, ни ненормализованный пробел не имеют значения.

Ответы на вопрос(4)

Ваш ответ на вопрос