JSFiddle - React, Tailwind, and code Playground
by scurrilus
HTML
<div class="article__body">
<div class="obfuscated">
Sdrs
</div>
<div class="obfuscated">
Ein anderer Test.
</div>
</div>
CSS
.deobfuscated {
background: green;
}
.obfuscated {
background: red;
}
JavaScript
function DeobfuscateText(rootNode) {
this.rootNode = rootNode;
this.init();
}
DeobfuscateText.prototype.init = function () {
const that = this;
Array.from(document.getElementsByClassName('obfuscated')).forEach((elem) => {
try {
that.replaceTextContent(elem);
if (elem.classList.contains('obfuscated')) {
elem.classList.remove('obfuscated');
elem.classList.add('deobfuscated');
} else {
elem.classList.add('deobfuscated');
}
} catch (e) {
console.log(e);
}
});
};
DeobfuscateText.prototype.replaceTextContent = (elem) => {
if ((elem.className).replace(/[\n\t]/g, '').indexOf('obfuscated') > -1) {
const obfuscatedText = elem.textContent;
let deobfuscatedText = '';
for (let i = 0; i < obfuscatedText.length; i++) {
const charValue = obfuscatedText.charCodeAt(i);
if (charValue === 177) {
deobfuscatedText += '%';
} else if (charValue === 178) {
deobfuscatedText += '!';
} else if (charValue === 180) {
deobfuscatedText += ';';
} else if (charValue === 181) {
deobfuscatedText += '=';
} else if (charValue === 32) {
deobfuscatedText += ' ';
} else if (charValue === 10) {
deobfuscatedText += '\n';
} else if (charValue > 33) {
deobfuscatedText += String.fromCharCode(charValue - 1);
}
}
elem.innerHTML = deobfuscatedText;
}
};
function deobfuscateText(selector) {
const el = document.getElementsByClassName(selector);
Array.prototype.forEach.call(el, (elem) => {
new DeobfuscateText(elem);
});
}
document.addEventListener('DOMContentLoaded', () => {
if (sessionStorage.deobfuscate === 'true') {
deobfuscateText('article__body');
}
...