Подтвердить что ты не робот

InnerText/textContent и получение каждого текста node

Я слышал, что использование el.innerText||el.textContent может дать ненадежные результаты, и поэтому я всегда настаивал на использовании следующей функции в прошлом:

function getText(node) {

    if (node.nodeType === 3) {
        return node.data;
    }

    var txt = '';

    if (node = node.firstChild) do {
        txt += getText(node);
    } while (node = node.nextSibling);

    return txt;

}

Эта функция проходит через все узлы внутри элемента и собирает текст всех текстовых узлов и текст внутри потомков:

например.

<div id="x">foo <em>foo...</em> foo</div>

Результат:

getText(document.getElementById('x')); // => "foo foo... foo"

Я уверен, что есть проблемы с использованием innerText и textContent, но я не смог найти окончательный список в любом месте, и я начинаю задаваться вопросом, просто ли он слушает.

Может ли кто-нибудь предложить какую-либо информацию о возможно недостаточной надежности textContent/innerText?

EDIT: нашел этот отличный ответ Kangax - 'innerText' работает в IE, но не в Firefox

4b9b3361

Ответ 1

Все о концах и пробелах - браузеры очень несовместимы в этом отношении, особенно в Internet Explorer. Выполнение обхода - это надежный способ получить одинаковые результаты во всех браузерах.