66 lines
1.6 KiB
JavaScript
66 lines
1.6 KiB
JavaScript
/**
|
|
* @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]);
|
|
}
|
|
});
|
|
|
|
})();
|