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.

Respuestas a la pregunta(2)

Su respuesta a la pregunta