Имеется вот такая функция:
domNormalize = function ( element ) {
var childs = element.childNodes;
for ( var i = 0; i < childs.length; i++ ) {
if ( childs[i].nodeType != 3 ) {
domNormalize( childs[i] );
} else if ( childs[i].nodeType == 3 && /\s*/.test(childs[i].textContent || childs[i].innerText) ) {
childs[i].parentNode.removeChild( childs[i] );
}
}
return element.innerHTML;
};
Например, если написать
domNormalize( document.body );
то будут удалены только те ноды, которые являются прямыми потомками BODY. Почему так происходит? В 5-й строчке ведь ясно написано, что если текущая нода — не текстовая, продолжать разбор дальше.