Как удалить каждый текст с сайта с помощью Javascript

Я хочу иметь функцию Javascript, которая удаляет каждый текст с веб-сайта. Основанием для этого является то, что для сравнения внешнего вида визуализированного DOM в разностных браузерах мне нужно было раньше устранить очевидные различия. Поскольку рендеринг шрифтов - известная разница, я хочу удалить каждый текст. Решения, которые я нашел, всегда были такими:

if(start.nodeType === Node.TEXT_NODE) 
{
    start.parentNode.removeChild(start);
}

Но это только удаляет чисто текстовые узлы. Я также хочу найти такие конструкции, как:

 <div>
        <p>
             <em>28.11.2014</em>
             <img></img>
                Testtext
             <span>
                <i>Testtext</i>
                Testtext
             </span>
        </p>
  </div>

Где элемент, содержащий текст, также содержит дочерние элементы, такие как или. Таким образом, элемент не распознается как текстовый узел.

Так что я в основном хочу превратить вышеупомянутый DOM в это:

 <div>
        <p>
             <em></em>
             <img></img>
             <span>
                <i></i>
             </span>
        </p>
  </div>

3 ответа

Решение

Вы можете попробовать что-то вроде этого.
демонстрация

HTML:

<div id="startFrom">
    <p>
        <em>28.11.2014</em>
            <img></img>
            Testtext
        <span>
            <i>Testtext</i>
            Testtext
        </span>
    </p>
</div>  

JavaScript:

var startFrom = document.getElementById("startFrom");

function traverseDom(node) {
    node = node.firstChild;
    while (node) {
        if (node.nodeType === 3) {
            node.data = "";
        }
        traverseDom(node);
        node = node.nextSibling;
    }
}

traverseDom(startFrom);
console.log(startFrom);

С Jquery.. ДЕМО

$('selecter').find("*").contents().filter(function() {
    return this.nodeType == 3;
}).remove();

Этот код ниже примерно проверен, но вы можете попробовать поместить его во внешний файл.js и выполнить его из документа при загрузке.

function cleantxt()
{
    var htmlsrc = document.documentElement.outerHTML;
    var htmlnew = '';
    var istag = false;
    for(i=0; i<htmlsrc.length; i++) {
        if(htmlsrc.charAt(i)=='<') {
            istag = true;
            htmlnew = htmlnew + htmlsrc.charAt(i);
        }
        else if(htmlsrc.charAt(i)=='>') {
            istag = false;
            htmlnew = htmlnew + htmlsrc.charAt(i);
        }
        else if(istag) {
            htmlnew = htmlnew + htmlsrc.charAt(i);
        }
    }
    document.getElementsByTagName("html")[0].innerHTML = htmlnew + 'Cleaned'; // just a signature to see it works 
}
Другие вопросы по тегам