innerText/textContent与检索每个文本节点相比

9 浏览
0 Comments

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;
}

这个函数遍历一个元素内的所有节点,并收集所有文本节点和后代节点内的文本:

例如:

foo foo... foo

结果:

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

我相当肯定使用innerTexttextContent存在问题,但我一直没有找到一个明确的列表,开始怀疑这只是道听途说。

有人能提供关于textContent/innerText可能缺乏可靠性的信息吗?

编辑:在Kangax的这个很棒的答案中找到了解答--'innerText' works in IE, but not in Firefox

0