Показать сообщение отдельно
  #4 (permalink)  
Старый 15.12.2014, 10:35
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,569

рони, что то я сейчас заморочился, универсальный вариант:
(function(){
    var locale = function(re, arr){ //сразу преобразуем массив в регулярное выражение
        var i = arr.length;
        while(i--)  arr[i] = arr[i].replace(re, '\\$&')
        return new RegExp(arr.join('|'), 'g')
    }(/[.*+?^${}()|\[\]\/\\]/g, [ //массив переведённых фраз
        '高於',
        'foo',
        'bar'
    ]);
    
    function replace(node){
        var frag = document.createDocumentFragment(), 
            div = document.createElement('div');
        div.appendChild(node.cloneNode());
        div.innerHTML = div.innerHTML.replace(locale, '<img src="http://myhost.ru/$&.jpeg">');
        while(div.hasChildNodes()) frag.appendChild(div.firstChild);            
        return frag       
    }
    
    var elems = document.getElementsByTagName('*'), i = elems.length;
    while(i--) {
        var childs = elems[i].childNodes, j = childs.length;
        while(j--) if( childs[j].nodeType === 3 && locale.test( childs[j].data ) ){ //перебираем детей и если нода текстовая и в ней есть переведённый текст 
            elems[i].replaceChild(replace(childs[j]), childs[j]); //меняем текстовую ноду на фрагмент докумета из текста и картинки
        }        
    }
}())
__________________
29375, 35
Ответить с цитированием