Skip to content

Instantly share code, notes, and snippets.

@mimonelu
Created July 21, 2022 08:29
Show Gist options
  • Save mimonelu/35516a37f1561a7a785143e13d643f8d to your computer and use it in GitHub Desktop.
Save mimonelu/35516a37f1561a7a785143e13d643f8d to your computer and use it in GitHub Desktop.
文字モザイクブックマークレット
(() => {
const exclusionTags = [ 'SCRIPT', 'STYLE' ]
const exclusionCharacters = [ ' ', ' ' ]
const emptyRegex = new RegExp('^[\\s ]*$', 's')
const maskCharacters = [ '▀', '▁', '▂', '▃', '▄', '▅', '▆', '▇', '█', '▔', '▙', '▚', '▛', '▜', '▞', '▟' ]
const irandom = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min
const traverseElement = (currentElement) => {
if (currentElement.nodeType === 1 && !exclusionTags.includes(currentElement.tagName)) {
currentElement.childNodes.forEach(traverseElement)
} else if (currentElement.nodeType === 3 && !emptyRegex.test(currentElement.nodeValue)) {
const maskElement = document.createElement('span')
maskElement.innerText = ''
for (let i = 0; i < currentElement.nodeValue.length; i ++) {
let character = currentElement.nodeValue.charAt(i)
if (!exclusionCharacters.includes(character)) {
character = maskCharacters[irandom(0, maskCharacters.length - 1)]
}
maskElement.innerText += character
}
currentElement.parentNode.replaceChild(maskElement, currentElement)
}
}
traverseElement(document.documentElement)
})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment