Greasy Fork

Greasy Fork is available in English.

CSDN文章阅读优化,过滤相关推荐中的下载模块&免登录查看所有评论&去广告

csdn文章阅读界面下侧的相关文章中会有下载模块,但是一般我们只是想看文章,不想跳到相关下载,因此想写个脚本过滤掉下载模块,同时还实现免登录查看所有评论的功能,评论保留翻页功能,页面实现去广告

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         CSDN文章阅读优化,过滤相关推荐中的下载模块&免登录查看所有评论&去广告
// @namespace    http://greasyfork.icu/zh-CN/scripts/425479
// @version      6.0
// @description  csdn文章阅读界面下侧的相关文章中会有下载模块,但是一般我们只是想看文章,不想跳到相关下载,因此想写个脚本过滤掉下载模块,同时还实现免登录查看所有评论的功能,评论保留翻页功能,页面实现去广告
// @author       sweet
// @include      *://blog.csdn.net/*/article/details/*
// @include      *://*.blog.csdn.net/article/details/*
// @run-at      document-idle
// @icon        https://cdn.jsdelivr.net/gh/doublesweet01/BS_script@master/image/sweet.jpg
// @note        v6.0去除免登录复制功能
// @note        v5.1修复一个bug
// @note        v5.0相关推荐模块进一步优化,去除课程列表
// @note        v4.0实现免登录复制
// @note        v3.0实现去广告
// @note        v2.1完善免登录展开评论功能,评论可以自动翻页,现在不会弹登录窗口了
// @note        v2.0实现免登录展开评论功能,评论可以自动翻页
// @note        v1.0实现过滤下载模块功能
// @require     https://cdn.staticfile.org/vue/2.6.11/vue.min.js
// @require     https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.min.js
// @grant    GM_getValue
// @grant    GM.getValue
// @grant    GM_setValue
// @grant    GM.setValue
// @grant    GM_addStyle
// @grant    GM_getResourceURL
// @grant    GM_listValues
// @grant    GM_getResourceUrl
// @grant    GM.getResourceUrl
// @grant    GM_xmlhttpRequest
// @grant    GM_getResourceText
// @grant    GM_registerMenuCommand
// @grant    GM_setClipboard
// @grant    unsafeWindow
// ==/UserScript==
(function () {
    'use strict';
    // 待隐藏的class名称集合
    var classNameArray = ['type_download', 'comment-list-box', 'text-center', 'd-none', 'login-mark','type_course'];
    var idNameArray = ['recommendAdBox'];
    var addStyle = GM_addStyle;
    var setClipboard = GM_setClipboard;

    // 隐藏元素
    function hideEle(className) {
        switch (className) {
            case 'type_download':
                let hideElement = document.querySelectorAll('.' + className);
                if (hideElement) {
                    for (let i = 0; i < hideElement.length; i++) {
                        hideElement[i].style.display = "none";
                    }
                }
                break;
            case 'comment-list-box':
                let hideElement01 = document.querySelector('.' + className);
                if (hideElement01) {
                    hideElement01.style = "";
                }
                break;
            case 'text-center':
                addStyle(".text-center{display:none;}");
                break;
            case 'd-none':
                addStyle(".d-none{display:block !important;}");
                break;
            case 'login-mark':
                addStyle(".login-mark,#passportbox{display:none !important;}");
                break;
            case 'type_course':
                let hideElement02 = document.querySelectorAll('.' + className);
                if (hideElement02) {
                    for (let i = 0; i < hideElement02.length; i++) {
                        hideElement02[i].style.display = "none";
                    }
                }
                break;
        }
    }

    // 隐藏元素
    function hideEleById(idName) {
        switch (idName) {
            case 'recommendAdBox':
                let hideElement = document.querySelectorAll('#' + idName);
                if (hideElement) {
                    for (let i = 0; i < hideElement.length; i++) {
                        hideElement[i].style.display = "none";
                    }
                }
                break;
        }
    }

    //对于不同类的元素,写个方法来一起修正css样式
    function removeElements(classNameArray) {
        for (let i = 0; i < classNameArray.length; i++) {//批量执行操作
            hideEle(classNameArray[i]);
        }
    }

    //对于不同类的元素,写个方法来一起修正css样式
    function removeElementsById(idNameArray) {
        for (let i = 0; i < idNameArray.length; i++) {//批量执行操作
            hideEleById(idNameArray[i]);
        }
    }

    function safeWaitFunc(classNameArray, callbackFunc, time) {
        var times = time || 50;
        var id = setInterval(function () {
            clearInterval(id);
            callbackFunc(classNameArray);
        }, times);
    }

    //打印脚本信息
    function printScript() {
        console.log("sweet-CSDN文章阅读优化,过滤相关推荐模块的下载部分&免登录查看全部评论&免登录复制&去广告~")
    }

    safeWaitFunc(classNameArray, removeElements);
    safeWaitFunc(idNameArray, removeElementsById);
    printScript();
})();