Показать сообщение отдельно
  #6 (permalink)  
Старый 23.11.2011, 22:04
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

я знаю. я сам имел дела с этим юкозом.

(к примеру, изменял вывод видео на странице)

тогда можно поудалять обработчики клика на ссылках

(function(){
    var i=0, b = document.links;
    while(b[i]) {
        b[i].onclick = null;
        b[i++].removeAttribute('onclick');
    }
})();


правда, этот код удалит обработчиков со всей страницы. нам нужно это сделать внутри какого-то элемента.

если надо внутри элемента удалить, то делаем так
function removeClickHandlers(element){
    var i=0, b = element.getElementsByTagName("a");
    while(b[i]) {
        b[i].onclick = null;
        b[i++].removeAttribute('onclick');
    }
}

функции вскармливаем элемент, внутри которого содержатся ссылки.

если же надо удалить обработчики из прибывшего через ajax текста, можно вообще регулярки заюзать.
но там есть прикол в построении регулярки (могу объяснить) - возни много.

а можно так сделать :
var result = .... ; // тут прибывший через ajax HTML

var cont = document.createElement('span'); // создаём временной контейнер для пришедшего текста

cont.innerHTML = result; // HTML этого элемента - прибывший текст. таким образом мы превратили текст в элементы

//дальше просто удаляем обработчики кликов на ссылках внутри этого элемента, используя функцию выше
removeClickHandlers(cont);

// и замещаем для удобства прибывший текст изменённым текстом
result = cont.innerHTML;

// дальше result вставляем как обычный текст. там обработчиков нет.

Последний раз редактировалось melky, 23.11.2011 в 22:17.
Ответить с цитированием