Конечно, вы можете просто перебирать узлы DOM:
function getTextNodes(node) {
var result = [];
for(var child = node.firstChild; child; child = child.nextSibling) {
if(child.nodeType === 3) { // text node
result.push(child);
}
else if(child.nodeType === 1) { // element node
result = result.concat(getTextNodes(child));
}
}
return result;
}
var textNodes = getTextNodes(document.body);
Это рекурсивный подход, вы также можете сначала выбрать все узлы элемента, а затем получить их дочерние текстовые узлы.
Возможно, вы также хотите отфильтровать текстовые узлы, содержащие только пробелы.
DEMO