【发布时间】:2016-09-07 18:24:32
【问题描述】:
This question 教授如何获取文档中的所有 TextNode,这也让我获得了 Javascript 文本。过滤掉所有 Javascript 代码节点的最佳方法是什么?
【问题讨论】:
标签: javascript dom dhtml textnode
This question 教授如何获取文档中的所有 TextNode,这也让我获得了 Javascript 文本。过滤掉所有 Javascript 代码节点的最佳方法是什么?
【问题讨论】:
标签: javascript dom dhtml textnode
<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>
【讨论】:
您可以克隆原始document,删除克隆document处的<script>元素,然后迭代克隆document的剩余节点
【讨论】: