To avoid handling URLs, identifiers, event handlers, etc .; you only need to act on the TEXT_NODE webpage. Never use innerHTML .
An effective way to work with text nodes is to use Tree Walker .
For replacement terms, use an array.
Putting it all together, the code looks like this:
var replaceArry = [ [/View your user account/gi, 'Tu cuenta'], [/Terms of service/gi, 'Términos y condiciones'], [/Privacy policy/gi, 'Privacidad'], // etc. ]; var numTerms = replaceArry.length; var txtWalker = document.createTreeWalker ( document.body, NodeFilter.SHOW_TEXT, { acceptNode: function (node) { //-- Skip whitespace-only nodes if (node.nodeValue.trim() ) return NodeFilter.FILTER_ACCEPT; return NodeFilter.FILTER_SKIP; } }, false ); var txtNode = null; while (txtNode = txtWalker.nextNode () ) { var oldTxt = txtNode.nodeValue; for (var J = 0; J < numTerms; J++) { oldTxt = oldTxt.replace (replaceArry[J][0], replaceArry[J][1]); } txtNode.nodeValue = oldTxt; }
source share