AtCoder Anonymizer

Hide your name on each page

  1. // ==UserScript==
  2. // @name AtCoder Anonymizer
  3. // @namespace http://atcoder.jp/
  4. // @version 0.1
  5. // @description Hide your name on each page
  6. // @author Anonymous
  7. // @match https://atcoder.jp/*
  8. // @grant none
  9. // @run-at document-end
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. const userScreenName = window.userScreenName;
  16. const pattern = new RegExp(userScreenName, "g");
  17. const replacement = "Anonymous";
  18.  
  19. function traverse(startNode) {
  20. const stack = [startNode];
  21. while (stack.length > 0) {
  22. const node = stack.pop();
  23. if (node.nodeType == node.TEXT_NODE) {
  24. node.textContent = node.textContent.replace(pattern, replacement);
  25. } else {
  26. for (const childNode of node.childNodes) {
  27. stack.push(childNode);
  28. }
  29. }
  30. }
  31. }
  32.  
  33. const observer = new MutationObserver(records => {
  34. for (const record of records) {
  35. for (const node of record.addedNodes) {
  36. traverse(node);
  37. }
  38. }
  39. });
  40.  
  41. traverse(document);
  42. observer.observe(document, {
  43. childList: true,
  44. subtree: true,
  45. });
  46. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址