Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 20.09.2010, 18:53
Интересующийся
Отправить личное сообщение для pashak Посмотреть профиль Найти все сообщения от pashak
 
Регистрация: 08.04.2010
Сообщений: 16

Ничего страшного не произойдёт, за исключением того, что обрежется форматированный текст в input. А в остальных случаях, ничего не случится.
Если не согласны - приведите конкретный пример.
Ответить с цитированием
  #12 (permalink)  
Старый 20.09.2010, 19:01
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Пересоздадутся все DOM-элементы на странице, на новых элементах уже не будет навешанных обработчиков событий.
Ответить с цитированием
  #13 (permalink)  
Старый 20.09.2010, 19:04
Интересующийся
Отправить личное сообщение для pashak Посмотреть профиль Найти все сообщения от pashak
 
Регистрация: 08.04.2010
Сообщений: 16

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

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

Последний раз редактировалось pashak, 20.09.2010 в 19:10.
Ответить с цитированием
  #14 (permalink)  
Старый 20.09.2010, 19:51
Интересующийся
Отправить личное сообщение для pashak Посмотреть профиль Найти все сообщения от pashak
 
Регистрация: 08.04.2010
Сообщений: 16

Как вариант:
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]

Последний раз редактировалось pashak, 20.09.2010 в 19:55.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск