使用TreeWalker检索非Javascript文本节点

时间:2016-05-12 05:35:37

标签: javascript dom dhtml textnode

This question教授如何在文档中获取所有TextNode,这也是我的Javascript文本。过滤掉所有Javascript代码节点的最佳方法是什么?

2 个答案:

答案 0 :(得分:8)

<script>标记内的文字只有一个共同点:它们的父级是<script>元素。

if (node.parentNode.nodeName !== 'SCRIPT')

另一种方法是使用过滤器:

&#13;
&#13;
var rejectScriptTextFilter = {
  acceptNode: function(node) {
    if (node.parentNode.nodeName !== 'SCRIPT') {
      return NodeFilter.FILTER_ACCEPT;
    }
  }
};

var walker = document.createTreeWalker(
  document.body, 
  NodeFilter.SHOW_TEXT, 
  rejectScriptTextFilter,
  false
);

var node;
var textNodes = [];

while(node = walker.nextNode()) {
  textNodes.push(node.nodeValue);
}

console.log(textNodes);
&#13;
<script> var str = "script here"; </script>
<p> text here </p>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以克隆原始document,删除克隆<script>上的document元素,然后迭代克隆的document

的剩余节点