对于这个问题,我需要找到特定节点下的所有文本节点。我可以这样做:
function textNodesUnder(root){
var textNodes = [];
addTextNodes(root);
[].forEach.call(root.querySelectorAll('*'),addTextNodes);
return textNodes;
function addTextNodes(el){
textNodes = textNodes.concat(
[].filter.call(el.childNodes,function(k){
return k.nodeType==Node.TEXT_NODE;
})
);
}
}
然而,鉴于使用 XPath 可以简单地查询.//text()
并使用它完成这一事实,这似乎不够优雅。
在 IE9+、Safari5+、Chrome19+、Firefox12+、Opera11+ 上获取 HTML 文档中特定元素下所有文本节点的最简单方法是什么?
“最简单”被粗略地定义为“高效且简短,无需打高尔夫球”。