Pregunta innerText / textContent vs. recuperación de cada nodo de texto [duplicado]


Esta pregunta ya tiene una respuesta aquí:

He escuchado eso usando el.innerText||el.textContent puede dar resultados poco fiables, y es por eso que siempre he insistido en usar la siguiente función en el pasado:

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;

}

Esta función atraviesa todos los nodos dentro de un elemento y reúne el texto de todos los nodos de texto y el texto dentro de los descendientes:

P.ej.

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

Resultado:

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

estoy bastante Seguro que hay problemas con el uso innerText y textContent, pero no he podido encontrar una lista definitiva en ninguna parte y estoy empezando a preguntarme si es solo rumores.

¿Alguien puede ofrecer información sobre la posible falta de fiabilidad de textContent / innerText?

EDITAR: Encontré esta gran respuesta de Kangax - 'innerText' funciona en IE, pero no en Firefox


32
2018-04-16 14:27


origen


Respuestas:


Se trata de líneas finales y espacios en blanco: los navegadores son muy inconsistentes a este respecto, especialmente en Internet Explorer. Hacer el recorrido es una forma segura de obtener resultados idénticos en todos los navegadores.


33
2018-04-16 15:02