CSDN|简书优化

支持手机端和PC端,屏蔽广告,优化浏览体验,自动跳转简书拦截URL

目前為 2023-07-13 提交的版本,檢視 最新版本

// ==UserScript==
// @name         CSDN|简书优化
// @icon         https://www.csdn.net/favicon.ico
// @namespace    https://gf.qytechs.cn/zh-CN/scripts/406136-csdn-简书优化
// @supportURL   https://gf.qytechs.cn/zh-CN/scripts/406136-csdn-简书优化/feedback
// @version      0.7.0
// @description  支持手机端和PC端,屏蔽广告,优化浏览体验,自动跳转简书拦截URL
// @author       WhiteSevs
// @match        http*://*.csdn.net/*
// @match        http*://*.jianshu.com/*
// @match        http*://*.jianshu.io/*
// @grant        GM_registerMenuCommand
// @grant        GM_unregisterMenuCommand
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_deleteValue
// @grant        GM_listValues
// @grant        GM_info
// @grant        unsafeWindow
// @run-at       document-start
// @require	     https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.4.1/jquery.min.js
// @require      https://gf.qytechs.cn/scripts/449471-viewer/code/Viewer.js?version=1170654
// @require      https://gf.qytechs.cn/scripts/455186-whitesevsutils/code/WhiteSevsUtils.js?version=1219374
// ==/UserScript==

(function () {
  const utils = Utils.noConflict();
  const jQuery = $.noConflict(true);
  const log = new utils.Log(GM_info);
  log.config({
    logMaxCount: 20,
    autoClearConsole: true,
  });
  /**
   * 因为在有些页面上,比如:简书,当插入style元素到head中,该页面清除该元素
   */
  const GM_addStyle = utils.GM_addStyle;
  let GM_Menu = null;
  /**
   * 移除元素(未出现也可以等待出现)
   * @param {string} selectorText 元素选择器
   */
  const waitForElementToRemove = function (selectorText = "") {
    utils.waitNode(selectorText).then((dom) => {
      dom.forEach((item) => {
        item.remove();
      });
    });
  };

  const Optimization = {
    jianshu: {
      /**
       * 判断是否是简书
       */
      locationMatch() {
        return Boolean(/jianshu.(com|io)/i.test(window.location.origin));
      },
      PC: {
        /**
         * 添加屏蔽CSS
         */
        addCSS() {
          GM_addStyle(`
          .download-app-guidance,
          .call-app-btn,
          .collapse-tips,
          .note-graceful-button,
          .app-open,
          .header-wrap,
          .recommend-wrap.recommend-ad,
          .call-app-Ad-bottom,
          #recommended-notes p.top-title span.more,
          #homepage .modal,
          button.index_call-app-btn,
          span.note__flow__download,
          .download-guide,
          #footer,
          .comment-open-app-btn-wrap,
          .nav.navbar-nav + div,
          .self-flow-ad,
          #free-reward-panel,
          div[id*='AdFive'],
          #index-aside-download-qrbox{
            display:none !important;
          }
          body.reader-day-mode.normal-size {
            overflow: auto !important;
          }
          .collapse-free-content{
            height:auto !important;
          }
          .copyright{
            color:#000 !important;
          }
          #note-show .content .show-content-free .collapse-free-content:after{
            background-image:none !important;
          }
          footer > div > div{
            justify-content: center;
          }`);
        },
        /**
         * 全文居中
         */
        articleCenter() {
          GM_addStyle(`
          div[role=main] aside,
          div._3Pnjry{
            display: none !important;
          }
          div._gp-ck{
            width: 100% !important;
          }`);
          waitForElementToRemove("div[role=main] aside");
          waitForElementToRemove("div._3Pnjry");
          utils.waitNode("div._gp-ck").then((dom) => {
            dom.forEach((item) => {
              item.style["width"] = "100%";
            });
          });
        },
        /**
         * 去除剪贴板劫持
         */
        removeClipboardHijacking() {
          const stopNativePropagation = (event) => {
            event.stopPropagation();
          };
          window.addEventListener("copy", stopNativePropagation, true);
          document.addEventListener("copy", stopNativePropagation, true);
        },
        /**
         * 自动展开全文
         */
        autoExpandFullText() {
          utils.waitNode(`div#homepage div[class*="dialog-"]`).then(
            (nodeList) => {
              nodeList[0].style["visibility"] = "hidden";
              utils.mutationObserver(nodeList[0], {
                callback: (mutations) => {
                  if (mutations.length == 0) {
                    return;
                  }
                  if (mutations[0].target.style["display"] != "none") {
                    document
                      .querySelector(
                        'div#homepage div[class*="dialog-"] .cancel'
                      )
                      ?.click();
                  }
                },
                config: {
                  /* 子节点的变动(新增、删除或者更改) */
                  childList: false,
                  /* 属性的变动 */
                  attributes: true,
                  /* 节点内容或节点文本的变动 */
                  characterData: true,
                  /* 是否将观察器应用于该节点的所有后代节点 */
                  subtree: true,
                },
              });
            }
          );
        },
        /**
         * 去除简书拦截其它网址的url并自动跳转
         */
        jumpRedirect() {
          if (window.location.pathname === "/go-wild") {
            /* 禁止简书拦截跳转 */
            window.stop();
            let search = window.location.href.replace(
              window.location.origin + "/",
              ""
            );
            search = decodeURIComponent(search);
            let newURL = search
              .replace(/^go-wild\?ac=2&url=/gi, "")
              .replace(/^https:\/\/link.zhihu.com\/\?target\=/gi, "");
            window.location.href = newURL;
          }
        },
        run() {
          this.addCSS();
          this.removeClipboardHijacking();
          this.autoExpandFullText();
          if (GM_Menu.get("JianShuArticleCenter")) {
            this.articleCenter();
          }
        },
      },
      Mobile: {
        addCSS() {
          Optimization.jianshu.PC.addCSS();
        },
        /**
         * 手机-移除底部推荐阅读
         */
        removeFooterRecommendRead() {
          GM_addStyle(`
          #recommended-notes{
            display: none !important;
          }`);
        },
        run() {
          this.addCSS();
          Optimization.jianshu.PC.removeClipboardHijacking();
          Optimization.jianshu.PC.autoExpandFullText();
          if (GM_Menu.get("JianShuremoveFooterRecommendRead")) {
            this.removeFooterRecommendRead();
          }
        },
      },
      /**
       * 函数入口
       */
      run() {
        this.PC.jumpRedirect();
        if (utils.isPhone()) {
          log.success("简书-移动端");
          this.Mobile.run();
        } else {
          log.success("简书-桌面端");
          this.PC.run();
        }
      },
    },
    csdn: {
      /**
       * 判断是否是CSDN
       */
      locationMatch() {
        return Boolean(/csdn.net/i.test(window.location.origin));
      },
      PC: {
        addCSS() {
          GM_addStyle(`
            .ecommend-item-box.recommend-recommend-box,
            .login-mark,
            .opt-box.text-center,
            .leftPop,
            #csdn-shop-window,
            .toolbar-advert,
            .hide-article-box,
            .user-desc.user-desc-fix,
            .recommend-card-box,
            .more-article,
            .article-show-more,
            #csdn-toolbar-profile-nologin,
            .guide-rr-first,
            #recommend-item-box-tow{
                display: none !important;
            }
            .comment-list-box{
                max-height: none !important;
            }
            .blog_container_aside,
            #nav{
                margin-left: -45px;
            }
            .recommend-right.align-items-stretch.clearfix,.dl_right_fixed{
                margin-left: 45px;
            }
            #content_views pre,
            #content_views pre code{
                user-select: text !important;
            }
            #article_content,
            .user-article.user-article-hide{
              height: auto !important;
              overflow: auto !important;
            }
          `);
        },
        /**
         * 去除剪贴板劫持
         */
        removeClipboardHijacking() {
          log.info("去除剪贴板劫持");
          jQuery(".article-copyright")?.remove();
          if (unsafeWindow.articleType) {
            unsafeWindow.articleType = 0;
          }
          if (
            unsafeWindow.csdn &&
            unsafeWindow.csdn.copyright &&
            unsafeWindow.csdn.copyright.textData
          ) {
            unsafeWindow.csdn.copyright.textData = "";
          }
          if (
            unsafeWindow.csdn &&
            unsafeWindow.csdn.copyright &&
            unsafeWindow.csdn.copyright.htmlData
          ) {
            unsafeWindow.csdn.copyright.htmlData = "";
          }
        },
        /**
         * 取消禁止复制
         */
        unBlockCopy() {
          log.info("取消禁止复制");
          jQuery(document).on("click", ".hljs-button.signin", function () {
            /* 复制按钮 */
            let btnNode = jQuery(this);
            /* 需要复制的文本 */
            let copyText = btnNode.parent().text();
            utils.setClip(copyText);
            btnNode.attr("data-title", "复制成功");
          });
          jQuery(document).on("mouseenter mouseleave", "pre", function () {
            this.querySelector(".hljs-button.signin")?.setAttribute(
              "data-title",
              "复制"
            );
          });
          /* 取消Ctrl+C的禁止 */
          utils.waitNode("#content_views").then(() => {
            unsafeWindow.$("#content_views").unbind("copy");
            jQuery("#content_views")
              .off("copy")
              .on("copy", function (event) {
                event?.preventDefault();
                event?.stopPropagation();
                utils.setClip(unsafeWindow.getSelection().toString());
                return false;
              });
          });
        },
        /**
         * 点击代码块自动展开
         */
        clickPreCodeAutomatically() {
          if (!GM_Menu.get("autoExpandContent")) {
            return;
          }
          log.info("点击代码块自动展开");
          jQuery(document).on("click", "pre", function () {
            let clickNode = jQuery(this);
            clickNode.css("height", "auto");
            clickNode.find(".hide-preCode-box")?.remove();
          });
        },
        /**
         * 恢复评论到正确位置
         */
        restoreComments() {
          /* 第一条评论 */
          log.info("恢复评论到正确位置-第一条评论");
          utils.waitNode(".first-recommend-box").then((dom) => {
            jQuery(".recommend-box.insert-baidu-box.recommend-box-style").prepend(
              jQuery(dom)
            );
          });
          log.info("恢复评论到正确位置-第二条评论");
          /* 第二条评论 */
          utils.waitNode(".second-recommend-box").then((dom) => {
            jQuery(".recommend-box.insert-baidu-box.recommend-box-style").prepend(
              jQuery(dom)
            );
          });
        },
        /**
         * 标识CSDN下载的链接
         */
        identityCSDNDownload() {
          log.info("标识CSDN下载的链接");
          jQuery(".recommend-item-box[data-url*='https://download.csdn.net/']").each(
            (index, item) => {
              if (GM_Menu.get("removeCSDNDownloadPC")) {
                item.remove();
              } else {
                jQuery(item).find(".content-box").css("border", "2px solid red");
              }
            }
          );
        },
        /**
         * 全文居中
         */
        articleCenter() {
          if (!GM_Menu.get("articleCenter")) {
            return;
          }
          log.info("全文居中");
          GM_addStyle(`
          aside.blog_container_aside{
            display:none !important;
          }
          #mainBox main{
            width: inherit !important;
          }
          `);
          GM_addStyle(`
          @media (min-width: 1320px) and (max-width:1380px) {
            .nodata .container {
                width:900px !important
            }

            .nodata .container main {
                width: 900px
            }
        
            .nodata .container main #pcCommentBox pre >ol.hljs-ln {
                width: 490px !important
            }
        
            .nodata .container main .articleConDownSource {
                width: 500px
            }
          }
          
          @media screen and (max-width: 1320px) {
              .nodata .container {
                  width:760px !important
              }
      
              .nodata .container main {
                  width: 760px
              }
          
              .nodata .container main #pcCommentBox pre >ol.hljs-ln {
                  width: 490px !important
              }
          
              .nodata .container main .toolbox-list .tool-reward {
                  display: none
              }
          
              .nodata .container main .more-toolbox-new .toolbox-left .profile-box .profile-name {
                  max-width: 128px
              }
          
              .nodata .container main .articleConDownSource {
                  width: 420px
              }
          }
          
          @media screen and (min-width: 1380px) {
              .nodata .container {
                  width:1010px !important
              }
          
              .nodata .container main {
                  width: 1010px
              }
          
              .nodata .container main #pcCommentBox pre >ol.hljs-ln {
                  width: 490px !important
              }
          
              .nodata .container main .articleConDownSource {
                  width: 560px
              }
          }
          
          @media (min-width: 1550px) and (max-width:1700px) {
              .nodata .container {
                  width:820px !important
              }
          
              .nodata .container main {
                  width: 820px
              }
          
              .nodata .container main #pcCommentBox pre >ol.hljs-ln {
                  width: 690px !important
              }
          
              .nodata .container main .articleConDownSource {
                  width: 500px
              }
          }
          
          @media screen and (min-width: 1700px) {
              .nodata .container {
                  width:1010px !important
              }
          
              .nodata .container main {
                  width: 1010px
              }
          
              .nodata .container main #pcCommentBox pre >ol.hljs-ln {
                  width: 690px !important
              }
          
              .nodata .container main .articleConDownSource {
                  width: 560px
              }
          }
          `);
        },
        /**
         * 添加前往评论的按钮,在返回顶部的下面
         */
        addGotoRecommandButton() {
          log.info("添加前往评论的按钮,在返回顶部的上面");
          let gotoRecommandNode = jQuery(`
          <a class="option-box" data-type="gorecommand">
            <span class="show-txt" style="display:flex;opacity:100;">前往<br>评论</span>
          </a>
          `);
          jQuery(gotoRecommandNode).on("click", function () {
            log.info("滚动到评论");
            jQuery("html, body").animate(
              {
                scrollTop:
                  jQuery("#toolBarBox").offset().top -
                  jQuery("#csdn-toolbar").height() -
                  8,
              },
              1000
            );
          });
          utils.waitNode(".csdn-side-toolbar").then(() => {
            jQuery(".csdn-side-toolbar a").eq("-2").after(gotoRecommandNode);
          });
        },
        /**
         * 屏蔽登录(不可用)弹窗
         */
        shieldLoginDialog() {
          if (GM_Menu.get("shieldLoginDialog")) {
            log.info("屏蔽登录(不可用)弹窗");
            window.GM_CSS_GM_shieldLoginDialog = [
              GM_addStyle(
                `.passport-login-container{display: none !important;}`
              ),
            ];
          }
        },
        /**
         * 自动展开内容块
         */
        autoExpandContent() {
          if (!GM_Menu.get("autoExpandContent")) {
            return;
          }
          log.info("自动展开内容块");
          GM_addStyle(`
            pre.set-code-hide{
              height: auto !important;
            }
            pre.set-code-hide .hide-preCode-box{
              display: none !important;
            }
          `);
        },
        /**
         * 显示/隐藏目录
         */
        showOrHideDirectory() {
          if (GM_Menu.get("showOrHideDirectory")) {
            log.info("显示目录");
            GM_addStyle(`
            aside.blog_container_aside{
              display: none !important;
            }
            `);
          } else {
            log.info("隐藏目录");
            GM_addStyle(`
            aside.blog_container_aside{
              display: block !important;
            }
            `);
          }
        },
        /**
         * 显示/隐藏侧边栏
         */
        showOrHideSidebar() {
          if (GM_Menu.get("showOrHideSidebar")) {
            log.info("显示侧边栏");
            GM_addStyle(`
            #rightAsideConcision{
              display: none !important;
            }
            `);
          } else {
            log.info("隐藏侧边栏");
            GM_addStyle(`
            #rightAsideConcision{
              display: block !important;
            }
            `);
          }
        },
        /**
         * 去除CSDN拦截其它网址的url并自动跳转
         */
        jumpRedirect() {
          /* https://link.csdn.net/?target=https%3A%2F%2Fjaist.dl.sourceforge.net%2Fproject%2Fportecle%2Fv1.11%2Fportecle-1.11.zip */
          if (
            window.location.hostname === "link.csdn.net" &&
            window.location.search.startsWith("?target")
          ) {
            /* 禁止CSDN拦截跳转 */
            window.stop();
            let search = window.location.search.replace(/^\?target=/gi, "");
            search = decodeURIComponent(search);
            let newURL = search;
            log.success(`跳转链接 ${newURL}`);
            window.location.href = newURL;
          }
        },
        run() {
          this.addCSS();
          this.articleCenter();
          this.shieldLoginDialog();
          this.autoExpandContent();
          this.showOrHideDirectory();
          this.showOrHideSidebar();
          let that = this;
          jQuery(document).ready(function () {
            that.removeClipboardHijacking();
            that.unBlockCopy();
            that.identityCSDNDownload();
            that.clickPreCodeAutomatically();
            that.restoreComments();
            that.addGotoRecommandButton();
          });
        },
      },
      Mobile: {
        addCSS() {
          GM_addStyle(`
          #mainBox{
            width: auto;
          }
          .user-desc.user-desc-fix{
            height: auto  !important;
            overflow: auto !important;
          }
          #operate,.feed-Sign-span,
          .view_comment_box,
          .weixin-shadowbox.wap-shadowbox,
          .feed-Sign-span,
          .user-desc.user-desc-fix,
          .comment_read_more_box,
          #content_views pre.set-code-hide .hide-preCode-box,
          .passport-login-container,
          .hljs-button[data-title='登录(不可用)后复制'],
          .article-show-more,
          #treeSkill,
          div.btn_open_app_prompt_div,
          div.readall_box,
          div.aside-header-fixed,
          div.feed-Sign-weixin,
          div.ios-shadowbox{
            display:none !important;
          }
          .component-box .praise {
            background: #ff5722;
            border-radius: 5px;
            padding: 0px 8px;
            height: auto;
                  
          }
          .component-box .praise,.component-box .share {
            color: #fff;
          }
          .component-box a {
            display: inline-block;
            font-size:xx-small;
          }
          .component-box {
            display: inline;
            margin: 0;
            position: relative;
            white-space:nowrap;
          }
          .csdn-edu-title{
            background: #4d6de1;
            border-radius: 5px;
            padding: 0px 8px;
            height: auto;
            color: #fff !important;
          }
          #comment{
            max-height: none !important;
          }
          #content_views pre,
          #content_views pre code{
            webkit-touch-callout: text !important;
            -webkit-user-select: text !important;
            -khtml-user-select: text !important;
            -moz-user-select: text !important;
            -ms-user-select: text !important;
            user-select: text !important;
          }
          #content_views pre.set-code-hide,
          .article_content{
            height: 100% !important;
            overflow: auto !important;
          }`);
          GM_addStyle(`
          .GM-csdn-dl{
            padding: .24rem .32rem;
            width: 100%;
            justify-content: space-between;
            -webkit-box-pack: justify;
            border-bottom: 1px solid #F5F6F7!important;
          }
          .GM-csdn-title{
            font-size: .3rem;
            color: #222226;
            letter-spacing: 0;
            line-height: .44rem;
            font-weight: 600;
            //max-height: .88rem;
            word-break: break-all;
            overflow: hidden;
            display: -webkit-box;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 2
          }
          .GM-csdn-title a{
            word-break: break-all;
            color: #222226;
            font-weight: 600;
          }
          .GM-csdn-title em,.GM-csdn-content em{
            font-style: normal;
            color: #fc5531
          }
          .GM-csdn-content{
            //max-width: 5.58rem;
            overflow: hidden;
            text-overflow: ellipsis;
            display: -webkit-box;
            -webkit-line-clamp: 1;
            -webkit-box-orient: vertical;
            color: #555666;
            font-size: .24rem;
            line-height: .34rem;
            max-height: .34rem;
            word-break: break-all;
            -webkit-box-flex: 1;
            -ms-flex: 1;
            flex: 1;
            margin-top: .16rem;
          }
          .GM-csdn-img img{
            width: 2.18rem;
            height: 1.58rem;
            //margin-left: .16rem
          }
          .GM-csdn-Redirect{
            color: #fff;
            background-color: #f90707;
            font-family: sans-serif;
            margin: auto 2px;
            border: 1px solid #ccc;
            border-radius: 4px;
            padding: 0px 3px;
            font-size: xx-small;
            display: inline;
            white-space: nowrap;
          }`);
        },
        /**
         * 重构底部推荐
         */
        refactoringRecommendation() {
          log.info("重构底部推荐");
          function refactoring() {
            /* 反复执行的重构函数 */
            jQuery(".container-fluid").each((index, item) => {
              item = jQuery(item);
              var url = ""; /* 链接 */
              var title = ""; /* 标题 */
              var content = ""; /* 内容 */
              var img = ""; /* 图片 */
              var isCSDNDownload = false; /* 判断是否是CSDN资源下载 */
              var isCSDNEduDownload = false; /* 判断是否是CSDN-学院资源下载 */
              if (item.attr("data-url")) {
                /* 存在真正的URL */
                url = item.attr("data-url");
                title = item.find(".recommend_title div.left").html();
                content = item.find(".text").html();
                if (item.find(".recommend-img").length) {
                  /* 如果有图片就加进去 */
                  item.find(".recommend-img").each((_index_, _item_) => {
                    img += jQuery(_item_).html();
                  });
                }
              } else {
                log.info("节点上无data-url");
                url = item.find("a[data-type]").attr("href");
                title = item.find(".recommend_title div.left").html();
                content = item.find(".text").html();
              }
              if (GM_Menu.get("showDirect")) {
                /* 开启就添加 */
                title += `<div class="GM-csdn-Redirect">Redirect</div>`;
              }
              var _URL_ = new URL(url);
              if (
                _URL_.host === "download.csdn.net" ||
                (_URL_.host === "www.iteye.com" &&
                  _URL_.pathname.match(/^\/resource/gi))
              ) {
                /* 该链接为csdn资源下载 */
                log.info("该链接为csdn资源下载");
                isCSDNDownload = true;
                title += `<div class="component-box"><a class="praise" href="javascript:;">CSDN下载</a></div>`;
              } else if (_URL_.origin.match(/edu.csdn.net/gi)) {
                /* 该链接为csdn学院下载 */
                isCSDNEduDownload = true;
                log.info("该链接为csdn学院下载");
                title += `<div class="component-box"><a class="csdn-edu-title" href="javascript:;">CSDN学院</a></div>`;
              }
              item.attr("class", "GM-csdn-dl");
              item.attr("data-url", url);
              item.html(
                `<div class="GM-csdn-title"><div class="left">${title}</div></div><div class="GM-csdn-content">${content}</div><div class="GM-csdn-img">${img}</div>`
              );
              if (
                (isCSDNDownload || isCSDNEduDownload) &&
                GM_Menu.get("removeCSDNDownloadMobile")
              ) {
                item.remove();
              }
              /* jQuery("#recommend")
              .find(".recommend_list")
              .before(jQuery("#first_recommend_list").find("dl").parent().html()); */
            });
          }
          utils.waitNode("#recommend").then((nodeList) => {
            utils.mutationObserver(nodeList[0], {
              callback: () => {
                setTimeout(() => {
                  refactoring();
                }, 300);
              },
              config: { childList: true, subtree: true, attributes: true },
            });
          });

          this.recommendClickEvent();
        },
        /**
         * 设置底部推荐点击跳转事件
         */
        recommendClickEvent() {
          log.info("设置底部推荐点击跳转事件");
          jQuery(document).on("click", ".GM-csdn-dl", function () {
            let url = jQuery(this).attr("data-url");
            if (GM_Menu.get("openNewTab")) {
              window.open(url, "_blank");
            } else {
              window.location.href = url;
            }
          });
        },
        /**
         * 去除广告
         */
        removeAds() {
          log.info("去除广告");
          /* 登录(不可用)窗口 */
          waitForElementToRemove(".passport-login-container");
          /* 打开APP */
          waitForElementToRemove(
            ".btn_open_app_prompt_box.detail-open-removed"
          );
          /* 广告 */
          waitForElementToRemove(".add-firstAd");
          /* 打开CSDN APP 小程序看全文 */
          waitForElementToRemove("div.feed-Sign-weixin");
          /* ios版本提示 */
          waitForElementToRemove("div.ios-shadowbox");
        },
        run() {
          this.addCSS();
          let that = this;
          jQuery(document).ready(function () {
            that.removeAds();
            that.refactoringRecommendation();
          });
        },
      },
      /**
       * 函数入口
       */
      run() {
        Optimization.csdn.PC.jumpRedirect();
        if (utils.isPhone()) {
          log.success("移动端模式");
          this.Mobile.run();
        } else {
          log.success("桌面端模式");
          this.PC.run();
        }
      },
    },
  };

  if (Optimization.csdn.locationMatch()) {
    if (utils.isPhone()) {
      GM_Menu = new utils.GM_Menu(
        {
          showDirect: {
            text: "手机-标识处理过的底部推荐文章",
            enable: true,
            showText: (_text_, _enable_) => {
              return (_enable_ ? "✅" : "❌") + " " + _text_;
            },
            callback: () => {
              window.location.reload();
            },
          },
          openNewTab: {
            text: "手机-底部推荐文章新标签页打开",
            enable: true,
            showText: (_text_, _enable_) => {
              return (_enable_ ? "✅" : "❌") + " " + _text_;
            },
            callback: () => {
              window.location.reload();
            },
          },
          removeCSDNDownloadMobile: {
            text: "手机-移除文章底部的CSDN下载",
            enable: false,
            showText: (_text_, _enable_) => {
              return (_enable_ ? "✅" : "❌") + " " + _text_;
            },
            callback: () => {
              window.location.reload();
            },
          },
        },
        false,
        GM_getValue,
        GM_setValue,
        GM_registerMenuCommand,
        GM_unregisterMenuCommand
      );
    } else {
      GM_Menu = new utils.GM_Menu(
        {
          removeCSDNDownloadPC: {
            text: "电脑-移除文章底部的CSDN下载",
            enable: false,
            showText: (_text_, _enable_) => {
              return (_enable_ ? "✅" : "❌") + " " + _text_;
            },
            callback: () => {
              window.location.reload();
            },
          },
          articleCenter: {
            text: "电脑-全文居中",
            enable: true,
            showText: (_text_, _enable_) => {
              return (_enable_ ? "✅" : "❌") + " " + _text_;
            },
            callback: () => {
              window.location.reload();
            },
          },
          shieldLoginDialog: {
            text: "电脑-屏蔽登录(不可用)弹窗",
            enable: true,
            showText: (_text_, _enable_) => {
              return (_enable_ ? "✅" : "❌") + " " + _text_;
            },
            callback: (_key_, _enable_) => {
              if (!_enable_) {
                window.GM_CSS_GM_shieldLoginDialog.forEach((item) => {
                  item.remove();
                });
              } else {
                if (typeof window.GM_CSS_GM_shieldLoginDialog !== "undefined") {
                  window.GM_CSS_GM_shieldLoginDialog = [
                    ...window.GM_CSS_GM_shieldLoginDialog,
                    GM_addStyle(
                      `.passport-login-container{display: none !important;}`
                    ),
                  ];
                } else {
                  window.GM_CSS_GM_shieldLoginDialog = [
                    GM_addStyle(
                      `.passport-login-container{display: none !important;}`
                    ),
                  ];
                }
              }
            },
          },
          autoExpandContent: {
            text: "电脑-自动展开内容块",
            enable: false,
            showText: (_text_, _enable_) => {
              return (_enable_ ? "✅" : "❌") + " " + _text_;
            },
            callback: () => {
              window.location.reload();
            },
          },
          showOrHideDirectory: {
            text: "电脑-显示目录",
            enable: false,
            showText: (_text_, _enable_) => {
              return _enable_ ? `⚙ 电脑-隐藏目录` : `⚙ ${_text_}`;
            },
            callback: (_key_, _enable_) => {
              window.location.reload();
            },
          },
          showOrHideSidebar: {
            text: "电脑-显示侧边栏",
            enable: false,
            showText: (_text_, _enable_) => {
              return _enable_ ? `⚙ 电脑-隐藏侧边栏` : `⚙ ${_text_}`;
            },
            callback: (_key_, _enable_) => {
              window.location.reload();
            },
          },
        },
        false,
        GM_getValue,
        GM_setValue,
        GM_registerMenuCommand,
        GM_unregisterMenuCommand
      );
    }
    Optimization.csdn.run();
  } else if (Optimization.jianshu.locationMatch()) {
    if (utils.isPhone()) {
      GM_Menu = new utils.GM_Menu(
        {
          JianShuremoveFooterRecommendRead: {
            text: "手机-移除底部推荐阅读",
            enable: false,
            showText: (_text_, _enable_) => {
              return (_enable_ ? "✅" : "❌") + " " + _text_;
            },
            callback: () => {
              window.location.reload();
            },
          },
        },
        false,
        GM_getValue,
        GM_setValue,
        GM_registerMenuCommand,
        GM_unregisterMenuCommand
      );
    } else {
      GM_Menu = new utils.GM_Menu(
        {
          JianShuArticleCenter: {
            text: "电脑-全文居中",
            enable: true,
            showText: (_text_, _enable_) => {
              return (_enable_ ? "✅" : "❌") + " " + _text_;
            },
            callback: () => {
              window.location.reload();
            },
          },
        },
        false,
        GM_getValue,
        GM_setValue,
        GM_registerMenuCommand,
        GM_unregisterMenuCommand
      );
    }

    Optimization.jianshu.run();
  }
})();

QingJ © 2025

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