Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Выделение внутреннего ХТМЛ в элементе в ИЕ.


Автор: fired 5.3.2008, 16:37
Привет. Задача следующая: в функцию передается объект - ХТМЛ-элемент страницы. Мне нужно выделить все его содержимое. В мозилле я сделал так:

Код

        var sel = document.getElementById("eframe_"+frameId).contentWindow.getSelection();
        if(sel.rangeCount > 0) sel.removeAllRanges();
        var oRange = eframeDoc.createRange();
        oRange.selectNodeContents(el);
        sel.addRange(oRange);


пара комментов: элемент в ифрейме, поэтому такой путь. el - элемент, собсна.
дак вот мне нужно сделать подобное в ИЕ. НО. меня интересует подобный способ, а именно, без задания позиций конца и начала. я немного покорячился и для способа с заданием позиций написал вот так:

Код

        var inner_text_el = el.innerHTML;
        var inner_text_body = eframeDoc.getElementsByTagName("body")[0].innerHTML;
        var pos = inner_text_body.indexOf("id="+elementId);
        var pos_start = inner_text_body.indexOf(inner_text_el,pos);
        var text = inner_text_body.substring(0,pos_start);
        inner_text_el = delTags(inner_text_el);
        text = delTags(text);
        pos_start = text.length;
        var oRange = eframeDoc.body.createTextRange(); 
        oRange.moveStart("character", pos_start);
        oRange.moveEnd("character", (pos_start+inner_text_el.length)-eframeDoc.getElementsByTagName("body")[0].innerText.length);
        oRange.select();

delTags - убирает теги из текста.
но данная функция стрёмно работает с таблицами и списками (то есть когда в качестве el выступает таблица или список). причем непонятно почему. вообщем я хочу найти способ получше. есть варианты?


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)