Я слышал, что использование 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