/** * @package ogre-obfuscation * @author cleverogre * @version 0.2.0 * @since 0.1.0 */ (() => { const reObfuscateElement = (element) => { element.outerHTML = unEncodeEmailChars(reObfuscateCore(element.getAttribute('data-content'))); }; const reObfuscate = (str, id) => { const el = document.getElementById(id); const newEl = document.createTextNode(''); newEl.innerHTML = unEncodeEmailChars(reObfuscateCore(str)); el.parentNode.replaceChild(newEl, el); }; const reObfuscateCore = (str) => { let out = ''; for (let i = 0; i < str.length; i++) { out = str.charAt(i) + out; } return out; }; const unEncodeEmailChars = (str) => { let i = 0; let num = ''; let out = ''; while (i < str.length) { if (str.charAt (i) == '&') { num = ''; i += 2; /// skip &# while (str.charAt(i) != ';' && i < str.length) { num += str.charAt(i); i++; } if (str.charAt(i) == ";") { i++; } out += String.fromCharCode(parseInt(num)); } else { out += str.charAt(i); i++; } } return out; }; document.addEventListener('DOMContentLoaded', () => { const elements = document.getElementsByClassName('obfuscate'); for (let i = elements.length - 1; i >= 0; i--) { reObfuscateElement(elements[i]); } }); })();