innerText / textContent vs. récupération de chaque nœud de texte [dupliquer]
Cette question a déjà une réponse ici:
J'ai entendu dire que l'utilisation de el.innerText||el.textContent
peut donner des résultats peu fiables, et c'est pourquoi j'ai toujours insisté sur l'utilisation de la fonction suivante dans le passé:
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;
}
Cette fonction passe par tous les nœuds d'un élément et rassemble le texte de tous les nœuds de texte et le texte dans les descendants:
Par exemple
<div id="x">foo <em>foo...</em> foo</div>
Résultat:
getText(document.getElementById('x')); // => "foo foo... foo"
Je suistout à fait sûr qu'il y a des problèmes avec l'utilisation de innerText
et textContent
, mais je n'ai pas été en mesure de trouver une liste définitive nulle part et je commence à me demander si c'est juste ouï-dire.
Quelqu'un peut-il offrir des informations sur le manque de fiabilité possible de textContent/innerText?
EDIT : trouvé cette excellente réponse par Kangax -- 'innerText' fonctionne dans C'est à dire, mais pas dans Firefox
1 réponses
Il s'agit de lignes de fin et d'espaces - les navigateurs sont très incohérents à cet égard, en particulier dans Internet Explorer. Faire la traversée est un moyen infaillible pour obtenir des résultats identiques dans tous les navigateurs.