我听说使用el.innerText||el.textContent
可以产生不可靠的结果每个文本节点,这就是为什么我一直在使用下面的函数在过去的坚持:的innerText /的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;
}
此功能遍历元素内的所有节点并收集所有文本节点的文本以及后代中的文本:
Eg
<div id="x">foo <em>foo...</em> foo</div>
结果:
getText(document.getElementById('x')); // => "foo foo... foo"
我相当肯定还有用innerText
和textContent
的问题,但我没能在别处找到一个明确的清单,我开始不知道这只是传闻。
任何人都可以提供有关textContent/innerText可能缺乏可靠性的任何信息?
编辑:由Kangax发现这个伟大的答案 - 'innerText' works in IE, but not in Firefox
太简单了,太有用了! 'document.TEXT_NODE'而不是'3'如何? 旧版浏览器不支持吗? – stackunderflow 2013-12-15 16:06:21