innerText/textContent と各テキストノードの取得 [重複] 質問する

innerText/textContent と各テキストノードの取得 [重複] 質問する

を使用すると信頼できない結果が得られる可能性があると聞いたことがある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 の信頼性が欠如している可能性について、情報を提供できる方はいらっしゃいますか?

編集: Kangaxによるこの素晴らしい回答を見つけました --「innerText」はIEでは機能しますが、Firefoxでは機能しません

ベストアンサー1

重要なのはエンドラインと空白です。この点に関しては、ブラウザ間で一貫性がまったくなく、特に Internet Explorer ではそれが顕著です。トラバーサルを実行すると、すべてのブラウザで確実に同じ結果が得られます。

おすすめ記事