JSFiddle - React, Tailwind, and code Playground

HTML

<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>

JavaScript

function getText(n) {
    var rv = '';
    
    if (n.nodeType == 3) {
        rv = n.nodeValue;
    } else {
        for (var i = 0; i < n.childNodes.length; i++) {
            rv += getText(n.childNodes[i]);
        }
        var d = getComputedStyle(n).getPropertyValue('display');
        if (d.match(/^block/) || d.match(/list/) || n.tagName == 'BR') {
            rv += "\n";
        }
    }
    
    return rv;

}; // getText()
alert(getText(document.body));