E-Hentai Helper

画廊新窗口打开

נכון ליום 11-02-2025. ראה הגרסה האחרונה.

  1. // ==UserScript==
  2. // @name E-Hentai Helper
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.4
  5. // @description 画廊新窗口打开
  6. // @author 乃木流架
  7. // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEh0lEQVR4nO1bzW/URhSfhUNLdt5mntMoioTUQ6V+8PFHcOAEpRcilJ3xpipVKB+RCB/imJW4cOWEEpReEC1pe+mZK3f+AEhvTUMrpT0hVRy2eo7XnrHHXpcdk8TMSE/a+MVjv5/f98wwlhlqZqbd5eIrCXhDcbzTCIJgWYI4tzg7O8FKRksC3lYc/1GAgyaS5Ph3F/AmyWpIvsLYIcXFD3v9gu+MOD42QJD05U2kXkoQqxLEvYbQKslkyAh4I7F5U+3FwyXGPmANGyST4mJdN4dF8gnkHLSLL5oovAkCbg7l7YI4yxTgrVQtxAPW8EHmYJiBBOxrF/pZ5xiCCIfhhH7Ttar8/Thy8soSABSIXtaDkpBV+QcegJC+bjaWglBV+QcegBXGDpFAWjhRWRMo4x94AJo4PADgNaBfYgLi6Z5XbjVTJGMRAOo9I+kBwKwGiGf7oHKrlUhGHwbB5wEDnwiBzwQHPhUGXwv0fTEkfTWIvhxWvh+AviGiSjpC0dIZTH6tOkIWdVqGHeJRnWMb6ffsLtPh5ZDjd7b2WtyGWyAqar8pEF9GPX9XHSFFwg//pyOWCh7aq9o5ttHwHuNZEHxT+i4WfreNFxI+D847AUDqFSPHnRBgauTEtntLa/PdbrLk+K127RcL0BulfG2Rl7TIPQAQLaHdfzsACsvtpJscwkefavP8mVnKbikQ2yV8AmgreV4bT9QCgAJ8I3lw7P8CULXrrED8bhOi18bjOe3R+PN86vMycFwCMFAcf60NAH2vQkdcS663xdXce+h8jpc1bft5lCxyLACihwen6wBAcrxkE4R+59/D4G/YgHENwBvt9/Oh7ToFAKY+s6gybeF5lXeeKV/3Dzb7dwMAp00G4nX6d3CxOgD2trttVTnrzCJKBf8rpoRPPmmU/TsBQAL2JeBdTQW35qan+bhhMLuqLEH8qKtzRFr4IzL4mn+whUenAMxNT3P9CxEgrvIAmx+wCpwBxPAPBfbvDAAWedzgoqYFr439N2PkAbaQZlP5rEmQ2o+yf6cArET1AT63OcdxnWA8WhLEHxan90pziqnQFezfKQA0uu3JU3Z1dgIAOcInFlP5KZ1bMwtLWKwdABqUENUGgJHYxHNwcSWZuyOWcgCU2H8tAPQ6nU8U4L91ABDy4Is8AGkK3m3jyRwAJfZfCwA0qDiqBkD1PCAeZnIDYjtbHOl+YJT91wZACDBFZbLLPMCa3oLYyL9b6gfK4v9YAITabrCiXWCmPYqe7d4yKprXbKik8yZ8PRzHWalzAFbS3WClu8BkB+fjl2yV7CSrlAdkwqGKNSSn3sMWGjnHOcYO1wJAk4YHALwG9L0JgPcBA+8EwUeBgQ+DgH1G5+i0bGyVNXwoEGtpZhksRwuJaaWFL5t8aGqBffyh5PibFgXOMDo6RkfI0nxarDcRhFj471M5cWeOHT0SMXUziJmb0emqxpwdFmv6l9/9+pPXdYBadJy0StXWCOL4yFZYtegcnWEOTSOOO/GXL26aLM7OTuw6xujI+Z7v7nazQzxYph0jic1r4z+3DJUNJNkEGAAAAABJRU5ErkJggg==
  8. // @match *://*.e-hentai.org/*
  9. // @match *://e-hentai.org/
  10. // @match *://*.exhentai.org/*
  11. // @match *://exhentai.org/
  12. // @grant none
  13. // @run-at document-start
  14. // @license GPL-3.0 License
  15. // ==/UserScript==
  16.  
  17. (function () {
  18. "use strict";
  19.  
  20. const CONFIG = {
  21. name: "E-Hentai Helper",
  22. selectors: {
  23. galleryLinks: ".itg.gltc .gl3c a",
  24. },
  25. debug: false
  26. };
  27.  
  28. class Logger {
  29. static prefix = [
  30. `%c${CONFIG.name}`,
  31. `background:#f66158;border-radius:0.5em;color:white;font-weight:bold;padding:2px 0.5em`
  32. ];
  33.  
  34. static log(...args) {
  35. if (CONFIG.debug) {
  36. console.log(...this.prefix, ...args);
  37. }
  38. }
  39. }
  40.  
  41. class GalleryHelper {
  42. static init() {
  43. Logger.log("初始化");
  44. this.setupGalleryLinks();
  45. this.observeNewContent();
  46. }
  47.  
  48. static setupGalleryLinks() {
  49. document.querySelectorAll(CONFIG.selectors.galleryLinks).forEach(link => {
  50. if (!link.hasAttribute("target")) {
  51. link.setAttribute("target", "_blank");
  52. link.setAttribute("rel", "noopener noreferrer"); // 安全性优化
  53. }
  54. });
  55. }
  56.  
  57. static observeNewContent() {
  58. const observer = new MutationObserver(mutations => {
  59. mutations.forEach(mutation => {
  60. if (mutation.addedNodes.length) {
  61. this.setupGalleryLinks();
  62. }
  63. });
  64. });
  65.  
  66. observer.observe(document.body, {
  67. childList: true,
  68. subtree: true
  69. });
  70. }
  71. }
  72.  
  73. // 页面加载完成后初始化
  74. if (document.readyState === "loading") {
  75. document.addEventListener("DOMContentLoaded", () => GalleryHelper.init());
  76. } else {
  77. GalleryHelper.init();
  78. }
  79.  
  80. })();