This question enseigne comment obtenir tous les TextNodes dans le document, et cela me permet également d'obtenir les textes Javascript. Quel est le meilleur moyen de filtrer tous les nœuds qui sont du code Javascript?L'utilisation d'un TreeWalker pour récupérer des nœuds de texte non-Javascript
0
A
Répondre
4
Le texte à l'intérieur des tags <script>
n'a qu'une chose en commun: leur parent est un élément <script>
.
if (node.parentNode.nodeName !== 'SCRIPT')
Une autre approche consiste à utiliser le filtre:
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>
0
Vous pouvez cloner le document
d'origine, supprimer <script>
éléments à clonée document
, puis restant nœuds de itérer clonés document