Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Удаление пустых текстовых нод работает только на верхнем уровне DOM (https://javascript.ru/forum/events/11157-udalenie-pustykh-tekstovykh-nod-rabotaet-tolko-na-verkhnem-urovne-dom.html)

pashak 20.09.2010 18:53

Ничего страшного не произойдёт, за исключением того, что обрежется форматированный текст в input. А в остальных случаях, ничего не случится.
Если не согласны - приведите конкретный пример.

Kolyaj 20.09.2010 19:01

Пересоздадутся все DOM-элементы на странице, на новых элементах уже не будет навешанных обработчиков событий.

pashak 20.09.2010 19:04

Предполагается, что данная функция обработает лишь начальный шаблон, т.е. ее необходимо запустить до начала действия скрипта, вешающего все обработчики событий. Возможно также применение не для все страницы, а для отдельного элемента, в чем и есть преимущество.

Как вариант - создание рекурсивной функции, проверяющей наличие ОПРЕДЕЛЕННЫХ символов в TextNode, потому что вышеприведенная версия не удалит текстовые узлы, состоящие из пробельных символов.

pashak 20.09.2010 19:51

Как вариант:
var normalize=function normalize(htmlRoot){
    if(!htmlRoot)
        htmlRoot=document.documentElement;
    for(var i=htmlRoot.firstChild;i!=null;)
        if(i.nodeType==3&&(i.textContent||i.text).search(/\S/)==-1)
        {
            var old=i;
            i=i.previousSibling||i.nextSibling;
            old.parentNode.removeChild(old);
        }
        else
        {
            if(i.childNodes.length)
                arguments.callee(i);
            i=i.nextSibling;
        }
};

Проверено на [JS]window.onload=recourse[\JS]


Часовой пояс GMT +3, время: 21:41.