Firefox и TD.innerText
От: papaha  
Дата: 20.08.06 07:24
Оценка:
Иммется табличка, ячейки которой необходимо обрабатывать. Для чтения содержимого TD использовал
cell.innerText. В IE все было прекрасно, а в Firefox'е возвращает пусто! Пока читаю innerHTML и режу из него тэги.
Как же можно в Firefox'e прочитать текст, содержащийся в TD? Помогите.
Re: Firefox и TD.innerText
От: kost-BebiX Украина http://fedorastones.blogspot.com
Дата: 20.08.06 07:57
Оценка:
Здравствуйте, papaha, Вы писали:

P>Иммется табличка, ячейки которой необходимо обрабатывать. Для чтения содержимого TD использовал

P>cell.innerText. В IE все было прекрасно, а в Firefox'е возвращает пусто! Пока читаю innerHTML и режу из него тэги.
P>Как же можно в Firefox'e прочитать текст, содержащийся в TD? Помогите.

Ищем в гугле JavaScript innerText fireFox

Первая ссылка недоступна... тем не менее она есть в кеше.
http://66.249.93.104/search?q=cache:ceMb-mj-x6cJ:blog.dreamprojections.com/archive/2005/01/01/461.aspx+JavaScript+innerText+fireFox&hl=ru&gl=ua&ct=clnk&cd=1

Находим
// innerText isn't available in Mozilla variants
if (navigator.appVersion.indexOf("MSIE") == -1) {
var innerText = ""
for (var i=0; i<element.childNodes.length; i++) {
switch (element.childNodes.item(i).nodeType) {
case 1: //ELEMENT_NODE
innerText += getInnerText(element.childNodes.item(i));
break;
case 3: //TEXT_NODE
innerText += element.childNodes.item(i).nodeValue;
break;
}
}
highlighter.Highlight(innerText);
}
else
{
highlighter.Highlight(element.innerText);
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Если программист в рабочее время играет, значит —
либо у него мало работы и большая зарплата,
либо у него много работы и маленькая зарплата.
Re: Firefox и TD.innerText
От: Alex Reyst Россия  
Дата: 20.08.06 08:08
Оценка:
Здравствуйте, papaha, Вы писали:

P>Иммется табличка, ячейки которой необходимо обрабатывать. Для чтения содержимого TD использовал

P>cell.innerText. В IE все было прекрасно, а в Firefox'е возвращает пусто! Пока читаю innerHTML и режу из него тэги.
P>Как же можно в Firefox'e прочитать текст, содержащийся в TD? Помогите.


Возможно, вам требуется textContent.
Хотя не вполне понял, что же требуется получить.
Все, что здесь сказано, может и будет использоваться против меня...
Re: Firefox и TD.innerText
От: DPP Россия  
Дата: 20.08.06 08:57
Оценка:
Здравствуйте, papaha, Вы писали:

P>cell.innerText


Универсальный способ получение текста ноды, в том числе xml
//где-то нету текстовых определений типов нод. на всякий случай добавим.
if(!window.Node || !Node.ELEMENT_NODE){
    var Node = {ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5,  ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12};
}

// DOM get node text (from sarissa engine)
function getText(oNode, deep)
{
    var s = "";
    var nodes = oNode.childNodes;
    for(var i=0; i < nodes.length; i++){
        var node = nodes[i];
        var nodeType = node.nodeType;
        if(nodeType == Node.TEXT_NODE || nodeType == Node.CDATA_SECTION_NODE){
            s += node.data;
        } else if(deep == true
                    && (nodeType == Node.ELEMENT_NODE
                        || nodeType == Node.DOCUMENT_NODE
                        || nodeType == Node.DOCUMENT_FRAGMENT_NODE)){
            s += getText(node, true);
        }
    }
    return s;
}
Re[2]: Firefox и TD.innerText
От: papaha  
Дата: 20.08.06 09:10
Оценка:
Здравствуйте, DPP, Вы писали:

DPP>Универсальный способ получение текста ноды, в том числе xml

...

Обстоятельно! Спасибо.
Re[3]: Firefox и TD.innerText
От: DPP Россия  
Дата: 20.08.06 10:50
Оценка:
Здравствуйте, papaha, Вы писали:

DPP>>Универсальный способ получение текста ноды, в том числе xml

P>...

P>Обстоятельно! Спасибо.

Не за что можете мне плюс поставить, хотя автор функции не я, а автор sarissa engine

вот еще функция, чтоб количество пробелов между содержимым нод на выходе getText было одинаковым в IE и FF (например если нужен не HTML, где много пробелов все равно один пробел, а именно Text)
// применить перед getText
/** (from DataRequestor engine)
 *
 *  Normalizes whitespace between mozilla and IE
 *    - removes blank text nodes (where "blank" is defined as "containing no non-space characters")
 *  @param  domObj    the root of the DOM object to normalize
 */
function normalizeWhitespace(domObj) {
    // with thanks to the kind folks in this thread: 
    //    http://www.codingforums.com/archive/index.php/t-7028
    if (document.createTreeWalker) {
        var filter = {
            acceptNode: function(node) {
                if (/\S/.test(node.nodeValue)) {
                    return NodeFilter.FILTER_SKIP;
                }
                return NodeFilter.FILTER_ACCEPT;
            }
        }
        var treeWalker = document.createTreeWalker(domObj, NodeFilter.SHOW_TEXT, filter, true);
        while (treeWalker.nextNode()) {
            treeWalker.currentNode.parentNode.removeChild(treeWalker.currentNode);
            treeWalker.currentNode = domObj;
        }
        return domObj;
    } else {
        return domObj;
    }
}

ЗЫ: я недавно писал свой XMLHttpRequest class и наткнулся на эти любопытные кусочки в чужых XMLHttpRequest движках.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.