0

Nicht ein dupe ... Nicht erwähnte Arbeit .. Versuchen, ein Wort mit einer Google-Erweiterung zu markieren. Dies wird als Inhaltsskript ausgeführt, aber es scheint keine funktionierende Lösung zu sein ... Was habe ich verpasst?Formatieren Sie ein Wort (machen Sie es rot) mit einer Chrome-Erweiterung

var elements = document.getElementsByTagName('*'); 

for (var i = 0; i < elements.length; i++) { 
    var element = elements[i]; 

    for (var j = 0; j < element.childNodes.length; j++) { 
     var node = element.childNodes[j]; 

     if (node.nodeType === 3) { 
      var text = node.nodeValue; 
      var replacedText = text.replace("Target Text", "<font color='red'>Target Text</font>"); 

      if (replacedText !== text) { 
       element.replaceChild(document.createTextNode(replacedText), node); 
      } 
     } 
    } 
} 

Antwort

0

In dieser Zeile für die untergeordneten Knoten eines Knotens Sie fragen:

var node = element.childNodes[j]; 

Dies wird eine Reihe von Knoten immer wieder zurückkehren, auch wenn es nur ein Knoten ist. So wird dieser Zustand nie wahr sein:

if (node.nodeType === 3) 

Sie sind eigentlich alle nodes bekommen, und Sie werden über diejenigen Schleife haben auch.

+0

Nun, tatsächlich funktioniert es, aber nicht der HTML-Code ... Es macht es nicht rot, sondern nur das Wort auf der Seite mit dem Code ohne Format ersetzen " Target Text " –

+1

@JessicaRay Wahrscheinlich möchten Sie die innereHTML und nicht den Text des Knotens setzen. – Nate

+0

Ja, @Nate, du hast Recht ... Danke. –

Verwandte Themen