Scrambler

scrambles all the text on a page

  1. // ==UserScript==
  2. // @name Scrambler
  3. // @namespace https://greasyfork.org/en/scripts/22121-scrambler
  4. // @version 1.1
  5. // @description scrambles all the text on a page
  6. // @author abbott
  7. // @match *://*/*
  8. // ==/UserScript==
  9.  
  10. window.onload = function() {
  11. var elements = document.body.getElementsByTagName('*');
  12.  
  13. for (var i = 0; i < elements.length; i++) {
  14. var text = '';
  15. elements[i].innerHTML.split(/(<.+?>)/).forEach(function(s) {
  16. text += s.charAt(0) === '<' ? s : scramble(s);
  17. });
  18.  
  19. elements[i].innerHTML = text;
  20. }
  21. };
  22.  
  23. // scrambles middle letters
  24. function scramble(s) {
  25. if (s.includes('&nbsp;')) { // ignores nbsp messes up the scramble a bunch
  26. return s;
  27. }
  28.  
  29. return s.split(' ').map(function(word) {
  30. if (word.length > 3) {
  31. var chars = word.split('');
  32.  
  33. for (var i = 1; i < chars.length - 1; i++) {
  34. var j = Math.floor(Math.random() * (i - 1) + 1);
  35. var temp = chars[i];
  36. chars[i] = chars[j];
  37. chars[j] = temp;
  38. }
  39.  
  40. return chars.join('');
  41. }
  42.  
  43. return word;
  44. }).join(' ');
  45. }