javascript - 使用 TreeWalker 检索非 Javascript 文本节点

标签 javascript dom dhtml textnode

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

最佳答案

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

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

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

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>

关于javascript - 使用 TreeWalker 检索非 Javascript 文本节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37178091/

相关文章:

javascript - 关闭弹出窗口后重新启用按钮

javascript - 如何创建一个 JavaScript float div 注册表单

javascript - 如何检索 HTML 元素的实际宽度和高度?

javascript - 选择圆弧/元素

javascript - 什么可以替代谷歌地图信息窗口

javascript - Onblur,下一个将获得焦点的控件是什么?

javascript - 我想找到符合条件的JSON对象并收集它们

javascript - 在 HTML 表格单元格中附加背景颜色

javascript - 如何将 javascript 应用于使用 append() 创建的元素?

javascript - 如何使用 jquery 绑定(bind)添加通配符