使用TreeWalker检索非Javascript文本节点 [英] Using a TreeWalker to retrieve non-Javascript text nodes

查看:65
本文介绍了使用TreeWalker检索非Javascript文本节点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这个问题教会如何获取文档中的所有TextNodes,这让我感到惊讶Javascript文本也是如此。过滤掉所有Javascript代码节点的最佳方法是什么?

This question teaches how to get all TextNodes inside the document, and this is getting me the Javascript texts as well. What is the best way to filter out all the Nodes that are Javascript code?

推荐答案

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

Text inside <script> tags has only one thing in common: their parent is a <script> element.

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

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

Another approach is to use the filter:

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

<script> var str = "script here"; </script>
<p> text here </p>

这篇关于使用TreeWalker检索非Javascript文本节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆