Resalte una palabra de texto en la página usando .replace ()
Estoy desarrollando una extensión de Google Chrome que le permite aplicar automáticamente una regla CSS de resaltado a una palabra que elija.
Tengo el siguiente código
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 fetchedText = text.match(/teste/gi);
if(fetchedText) {
var replacedText = element.innerHTML.replace(/(teste)/gi, "<span style=\"background-color: yellow\">$1</span>");
if (replacedText !== text) {
element.innerHTML = replacedText;
}
}
}
}
}
Lo que rompe y congela mi pestaña de Chrome. Sin embargo, si cambio deelement.innerHTML = replacedText;
aelement.innerHTML = "text";
esto funciona.
Parece que no puedo encontrar lo que está mal con el siguiente código.