csdn_plus

CSDN免登录,保持文本原有格式复制,展开折叠的代码,展开需要关注博主阅读全文的内容

Fra 23.07.2023. Se den seneste versjonen.

  1. // ==UserScript==
  2. // @name csdn_plus
  3. // @namespace https://github.com/qgning/tampermonkey_csdn_plus
  4. // @version 0.0.2
  5. // @author gning
  6. // @description CSDN免登录,保持文本原有格式复制,展开折叠的代码,展开需要关注博主阅读全文的内容
  7. // @license BSD
  8. // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACoElEQVRYR+2UT2hcVRTGf99LTEGki/x5nRmrjTNDpqaUQoKO4kYQQcRFCzaLWIWKhYLYRRctdNNk1xYRSopYFFxokVriJhaLiN2kQgJuQiN2nBknEH3JpCmUYrWYeV950xRsKd1JN++uDufce853fvfcKx7x0iOuTyogJZASSAmkBO4hcHlwsOvGzTgXmKy9dr2ri5WhanXl//yu2wJ+ym/d3hGzFxgFb/pvwXLjioqZzKDxfsslwQ7gcSACmrInLJ1dP7NkWMBcaK3FpxeuXo2K3d0bvaHzPGIjpgfoNsxJPlP7c2VCM/mtbyj2aUMO+F5mzvIlSU9gb36+UTlWyIaXgW2Gc5hf2slgs3Af1reID23GEUXBc8AAMC8HI2tws0Px78A/hsnAumW5fDefZraUvkbsBn9VblRGH4Q7nw1XdUf5uQCmgo7Wj5XF1T+SvYVs30nQAcOeetQ8k/jymXBM4ijWKan1uQl+Fvq1Gi0/m8SLmd6XreBiYmumv+TEiPH4i43K2AMFZPpel7QT2AX0AteNPq5Hy0cK2fCbxN+K9UJjeXnmvgIXbE9IOg/8UIuar94X/1uzz5SmbV7CfFFeuPLOwwaumMn0Qbzb4l1gWPaIpcOJfaujq2dxcfHaHSphgrwf+YAddAp/JJisRs031+NJI4nwec1uKb1l8WUbB9SM5rCrEqWWg/E9/65+QEw3YskmksgDb7eF2nuRjgNhewbwkNAwIpdcVz1qjuRz4SmZ98Gf1aKVfW0C2U3vGX9qe6r9CmafHnjFgZIXUAblDdcEC491tnaO/HXjoB33Iw0BTyF+w8zbVOpLzbFCNpwGnmx3DA1ww+hsPWp+st7td8BrmBO1pWZCi0IuPIQ5Dj6Z/oQpgZRASiAlkBK4DZtvGMy5535NAAAAAElFTkSuQmCC
  9. // @supportURL https://github.com/qgning/tampermonkey_csdn_plus
  10. // @match https://blog.csdn.net/*/article/details/*
  11. // @grant GM_addStyle
  12. // @grant GM_setClipboard
  13. // ==/UserScript==
  14.  
  15. (function () {
  16. 'use strict';
  17.  
  18. var _a, _b;
  19. var _GM_addStyle = /* @__PURE__ */ (() => typeof GM_addStyle != "undefined" ? GM_addStyle : void 0)();
  20. var _GM_setClipboard = /* @__PURE__ */ (() => typeof GM_setClipboard != "undefined" ? GM_setClipboard : void 0)();
  21. _GM_addStyle(" #content_views pre { -webkit-touch-callout: auto; -webkit-user-select: auto; -khtml-user-select: auto; -moz-user-select: auto; -ms-user-select: auto; user-select: auto; !important; } #content_views pre code { -webkit-touch-callout: auto; -webkit-user-select: auto; -khtml-user-select: auto; -moz-user-select: auto; -ms-user-select: auto; user-select: auto; !important;}");
  22. let contentEl = document.querySelector("main .blog-content-box");
  23. if (contentEl && contentEl.parentNode) {
  24. contentEl.parentNode.replaceChild(contentEl.cloneNode(true), contentEl);
  25. }
  26. document.querySelectorAll(".set-code-hide").forEach((el) => el.classList.remove("set-code-hide"));
  27. document.querySelectorAll(".hide-preCode-box").forEach((el) => el.remove());
  28. let copy_buttons = document.getElementsByClassName("hljs-button");
  29. for (let i = 0; i < copy_buttons.length; i++) {
  30. copy_buttons[i].setAttribute("data-title", "Copy code");
  31. copy_buttons[i].removeAttribute("onclick");
  32. let timerid = void 0;
  33. copy_buttons[i].addEventListener("click", (event) => {
  34. let button = copy_buttons[i];
  35. clearTimeout(timerid);
  36. event.stopPropagation();
  37. _GM_setClipboard(button.parentNode.innerText, "text");
  38. button.setAttribute("data-title", "Copied!");
  39. timerid = setTimeout(() => {
  40. button.setAttribute("data-title", "Copy code");
  41. }, 1e3);
  42. });
  43. }
  44. (_a = document.getElementById("article_content")) == null ? void 0 : _a.removeAttribute("style");
  45. (_b = document.getElementById("btn-no-login")) == null ? void 0 : _b.remove();
  46.  
  47. })();