Extraiga texto de HTML mientras preserva las nuevas líneas de elementos a nivel de bloque

Fondo

Máspreguntas sobre la extracción de texto de HTML (es decir,pelar las etiquetas) utilizar:

jQuery( htmlString ).text();

Si bien esto abstrae las inconsistencias del navegador (comoinnerText contratextContent), la llamada a la función también ignora el significado semántico de los elementos a nivel de bloque (comoli).

Problema

Preservar nuevas líneas de elementos a nivel de bloque (es decir, la intención semántica) en varios navegadores no implica un esfuerzo pequeño, comoMike Wilcox describe.

Una solución aparentemente más simple sería emular pegar contenido HTML en un<textarea>, que elimina HTML y preserva las nuevas líneas de elementos a nivel de bloque. Sin embargo, las inserciones basadas en JavaScript no activan las mismas rutinas de HTML a texto que los navegadores emplean cuando los usuarios pegan contenido en una<textarea>.

También traté de integrar la de Mike Wilcox.Código JavaScript. El código funciona en Chromium, pero no en Firefox.

Pregunta

¿Cuál es la forma más sencilla de utilizar el navegador cruzado para extraer texto de HTML y conservar las nuevas líneas semánticas paraelementos a nivel de bloque usando jQuery (ovainilla JavaScript)?

Ejemplo

Considerar:

Seleccione y copie toda esta pregunta.Abre elpágina de ejemplo de textarea.Pegue el contenido en el área de texto.

El área de texto conserva las nuevas líneas para listas ordenadas, encabezados, texto preformateado, etc. Ese es el resultado que me gustaría lograr.

Para aclarar aún más, dado cualquier contenido HTML, tales como:

   <h1>Header</h1>
   <p>Paragraph</p>
   <ul>
     <li>First</li>
     <li>Second</li>
   </ul>
   <dl>
     <dt>Term</dt>
       <dd>Definition</dd>
   </dl>
   <div>Div with <span>span</span>.<br />After the <a href="...">break</a>.</div>

¿Cómo producirías?

  Header
  Paragraph

    First
    Second

  Term
    Definition

  Div with span.
  After the break.

Nota: Ni la sangría ni los espacios en blanco no normalizados son relevantes.

Respuestas a la pregunta(4)

Su respuesta a la pregunta