CSDN|简书优化

支持手机端和PC端

目前为 2023-01-06 提交的版本。查看 最新版本

作者
WhiteSevs
评分
0 0 0
版本
0.4.5
创建于
2020-06-27
更新于
2023-01-06
大小
16.2 KB
许可证
暂无
适用于

// ==UserScript== // @name CSDN|简书优化 // @namespace http://tampermonkey.net/ // @version 0.4.5 // @description 支持手机端和PC端 // @author MT-戒酒的李白染 // @include http*://www.csdn.net/* // @include http*://bbs.csdn.net/* // @include http*://www.jianshu.com/* // @include http*://blog.csdn.net/ // @include http*://download.csdn.net/* // @grant GM_addStyle // @grant GM_registerMenuCommand // @grant GM_unregisterMenuCommand // @grant GM_getValue // @grant GM_setValue // @grant GM_deleteValue // @grant GM_listValues // @grant unsafeWindow // @run-at document-start // @require http://cdn.staticfile.org/jquery/2.1.4/jquery.min.js // @require https://greasyfork.org/scripts/455186-whitesevsutils/code/WhiteSevsUtils.js?version=1135447 // @require https://greasyfork.org/scripts/449471-viewer/code/Viewer.js?version=1081056 // ==/UserScript==

(function () { "use strict";

var GM_menus = [ ["menu_showRedirect", "手机csdn显示Redirect", true], ["menu_thistab", "手机csdn新页面打开", true], ];

function change_normal_menu() { //修改菜单默认值 for (let i = 0; i < GM_menus.length; i++) { let get_GM_value = GM_getValue(GM_menus[i][0]); if (get_GM_value) { } else { console.log("修改菜单值"); GM_menus[i][2] = false; } } }

function register_GM_Menu() { //注册油猴菜单 for (let i = 0; i < GM_menus.length; i++) { let current_v = GM_menus[i][0]; let current_name = GM_menus[i][1]; let current_status = GM_menus[i][2]; GM_registerMenuCommand( [${current_status ? "√" : "×"}]${current_name}, function () { if (current_status) { console.log("关闭"); GM_deleteValue(current_v); } else { console.log("开启"); GM_setValue(current_v, "1"); } window.location.reload(); } ); } }

function isPhone() { /* 判断是否是手机访问 */ return Boolean(/(iPhone|iPad|iPod|iOS|Android)/i.test(navigator.userAgent)); }

function isCSDN() { return Boolean(/csdn.net/i.test(window.location.href)); }

function isJianShu() { return Boolean(/jianshu.com/i.test(window.location.href)); } change_normal_menu(); register_GM_Menu();

if (!isPhone()) { //电脑 console.log("电脑访问"); GM_addStyle( .ecommend-item-box.recommend-recommend-box, .login-mark, .opt-box.text-center, .leftPop, #csdn-shop-window, #passportbox, .passport-login-container, .toolbar-advert, .hide-article-box{ 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 code{ user-select: text !important; } #article_content{ height: auto !important; overflow: auto !important; } ); $(document).ready(function () { unsafeWindow.articleType = 0; Utils.waitForDOM(".hljs-button.signin").then((dom) => { if (dom.length) { $(".hljs-button.signin").attr("data-title", "复制"); $(".hljs-button.signin").on("click", function () { const copyBtn = $(this); const copyArea = $(this).parent(); copyBtn.attr("data-title", "复制成功"); const btnParentElement = Utils.findParentDOM(this, (dom) => { return dom.className == "prettyprint" ? true : false; }); if (btnParentElement) { $(btnParentElement).bind({ mouseenter: function (e) { copyBtn.attr("data-title", "复制"); $(btnParentElement).unbind("mouseenter").unbind("mouseleave"); }, mouseleave: function (e) { copyBtn.attr("data-title", "复制"); $(btnParentElement).unbind("mouseenter").unbind("mouseleave"); }, }); } Utils.setClip(copyArea.text()); }); } }); $(".recommend-item-box[data-url*='https://download.csdn.net/']").each( (index, item) => { $(item).find(".content-box").css("border", "2px solid red"); } ); }); } else { //手机 if (isCSDN()) { GM_addStyle(` #mainBox { width: auto; } #operate,.feed-Sign-span, .view_comment_box, .weixin-shadowbox.wap-shadowbox, .feed-Sign-span{ display:none !important; } .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;
        }
        .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;
        }
        .comment_read_more_box,
        #content_views pre.set-code-hide .hide-preCode-box,
        .passport-login-container,
        .hljs-button[data-title='登录后复制']
        {
            display: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{
            height: 100% !important;
            overflow-y: auto !important;
        }
        `);
  function replace_all_commend() {
    //替换所有的推荐
    var commend_list = $(".container-fluid");
    for (var coml = 0; coml < commend_list.length; coml++) {
      let current_commend_className =
        commend_list[coml].getAttribute("class");
      let current_commend_url = "";
      let current_commend_title = "";
      let current_commend_content = "";
      let current_commend_img = "";
      if (commend_list[coml].getAttribute("data-url")) {
        //有data-url 就有recommend_title
        /* console.log("有 data-url"); */
        current_commend_url = commend_list[coml].getAttribute("data-url");
        current_commend_title = $(commend_list[coml])
          .find(".recommend_title")
          .html();
        current_commend_content = $(commend_list[coml])
          .find(".text")
          .html();
        // current_commend_title = commend_list[coml].getElementsByClassName("recommend_title")[0].innerHTML;
        // current_commend_content = commend_list[coml].getElementsByClassName("text active")[0].innerHTML;
        let current_commend_img_dom = $(commend_list[coml]).find(
          ".recommend-img"
        );
        if (current_commend_img_dom.length) {
          for (
            var imgs = 0;
            imgs < current_commend_img_dom.length;
            imgs++
          ) {
            current_commend_img =
              current_commend_img + current_commend_img_dom[imgs].innerHTML;
          }
        }
      } else {
        /* console.log("没有data-url"); */
        current_commend_url =
          commend_list[coml].getElementsByTagName("a")[0].href;
        current_commend_title =
          commend_list[coml].getElementsByTagName("a")[0].innerHTML;
        current_commend_content =
          commend_list[coml].getElementsByClassName("text")[0].innerHTML;
        current_commend_img = "";
      }
      /* console.log("真实url:", current_commend_url); */
      if (GM_menus[0][2]) {
        current_commend_title =
          current_commend_title +
          `<div class="GM-csdn-Redirect">Redirect</div>`;
      }
      if (
        current_commend_url.match(
          /http(s|):\/\/(download.csdn.net|www.iteye.com\/resource)/g
        )
      ) {
        console.log("该链接为csdn资源下载,标识");
        current_commend_title =
          current_commend_title +
          `<div class="component-box"><a class="praise" href="javascript:;">CSDN下载</a></div>`;
      } else if (current_commend_url.match(/edu.csdn.net/g)) {
        console.log("该链接为csdn学院下载,标识");
        current_commend_title =
          current_commend_title +
          `<div class="component-box"><a class="csdn-edu-title" href="javascript:;">CSDN学院</a></div>`;
      }
      commend_list[coml].className = "GM-csdn-dl";
      commend_list[coml].setAttribute("data-url", current_commend_url);
      commend_list[coml].innerHTML =
        `<div class="GM-csdn-title">` +
        current_commend_title +
        "</div>" +
        `<div class="GM-csdn-content">` +
        current_commend_content +
        "</div>" +
        `<div class="GM-csdn-img">` +
        current_commend_img +
        "</div>";
      $("#recommend")
        .find(".recommend_list")
        .before($("#first_recommend_list").find("dl").parent().html());
      $("#first_recommend_list")?.remove();
    }
  }

  function new_commend_event() {
    //新的推荐跳转事件
    $(".GM-csdn-dl").bind("click", function (e) {
      let current_click_url = e.currentTarget.dataset.url;
      if (GM_menus[1][2]) {
        window.open(current_click_url);
      } else {
        window.location.href = current_click_url;
      }
    });
  }

  function auto_review() {
    //自动展开
    $(".article_content")?.removeAttr("style");
    $(".readall_box")?.show();
    $(".readall_box")?.addClass("readall_box_nobg");
    $(".readall_box")?.hide();
    $(".readall_box")?.addClass("readall_box_nobg");
    $(".detail-open-app-isshow")?.css("display", "block");
    $(".isshow-mask-lock-box")?.show();
  }
  function removeElement() {
    /* 移除一些元素 */
    $(".passport-login-container")?.remove();
  }

  $(document).ready(function () {
    console.log("mobile csdn");
    var csdn_interval_runum = 0;
    var csdn_interval = setInterval(function () {
      csdn_interval_runum = csdn_interval_runum + 1;
      console.log("展开");
      if (csdn_interval_runum <= 5) {
        auto_review();
        removeElement();
      } else {
        clearInterval(csdn_interval);
      }
    }, 200);
    var loding_comment_dom_num = 0;
    var loding_comment_dom = setInterval(function () {
      loding_comment_dom_num = loding_comment_dom_num + 1;
      if (loding_comment_dom_num <= 5) {
        try {
          replace_all_commend();
        } catch (err) {
          console.log("替换底部链接失败", err);
        }
      } else {
        clearInterval(loding_comment_dom);
        new_commend_event();
      }
    }, 500);
  });
} else if (isJianShu()) {
  console.log("简书");
  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{
            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;
        }
        `);
  Utils.waitForDOM('div#homepage div[class*="dialog-"]').then((dom) => {
    if (dom.length) {
      dom[0].style["visibility"] = "hidden";
    }
  });
  Utils.mutationObserver('div#homepage div[class*="dialog-"]', {
    fn: (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,
    },
  });
}

} })();