// ==UserScript==
// @name CSDN 内容清爽版
// @namespace http://tampermonkey.net/
// @version 1.0
// @description 解除CSDN复制限制,移除广告和推荐,仅保留正文区域
// @author 独孤歌
// @match *://blog.csdn.net/*
// @license MIT
// @icon https://csdnimg.cn/public/favicon.ico
// @grant GM_addStyle
// @run-at document-start
// ==/UserScript==
(function () {
'use strict';
GM_addStyle(`
body, html {
margin: 0 !important;
padding: 0 !important;
overflow-x: hidden !important;
}
/* 隐藏一切不相关的区域 */
#csdn-toolbar,
.csdn-side-toolbar,
#toolBarBox,
.recommend-right,
#recommendAdBox,
.recommend-box,
.blog-footer-bottom,
aside,
.operate-box,
#treeSkill,
.csdn-side-toolbar,
.tool-box,
.csdn-toolbar,
.passport-login-container,
.meau-gotop-box,
.comment-box,
footer,
.tool-box,
#asideFooter,
.left-toolbox,
.second-recommend-box,
.blog_container_aside {
display: none !important;
}
main { width: auto !important }
/* 让 code 和 pre 块可以复制 */
pre, code {
user-select: text !important;
}
`);
// 移除广告和推荐区域
const removeElements = () => {
const selectors = [
'#csdn-toolbar', // 顶部工具栏
'.csdn-side-toolbar', // 右下角悬浮按钮
'#toolBarBox', // 悬浮工具条
'.recommend-right', // 右侧推荐
'#recommendAdBox', // 推荐广告
'.recommend-box', // 阅读推荐
'.blog-footer-bottom', // 脚部信息
'aside', // 侧边栏
'.operate-box', // 点赞收藏
'#treeSkill', // 左侧目录树
'.csdn-side-toolbar', // 边栏按钮
'.comment-box', // 评论区(可选)
'.tool-box', // 顶部小工具
'.csdn-toolbar', // 顶部横幅
'.passport-login-container', // 登录(不可用)弹窗
'.meau-gotop-box', // 返回顶部
];
selectors.forEach((selector) => {
document.querySelectorAll(selector).forEach(el => el.remove());
});
// 处理正文区域宽度
const content = document.querySelector('.blog-content-box');
if (content) {
content.style.margin = '0 auto';
content.style.width = '100%';
}
// 清理 body 限制复制的事件
['copy', 'cut', 'contextmenu', 'selectstart', 'keydown'].forEach(event => {
document.documentElement.addEventListener(event, e => e.stopPropagation(), true);
});
// 解除代码复制限制
document.querySelectorAll('pre, code').forEach(el => {
el.style.userSelect = 'text';
});
// 展开阅读全文按钮(有些文章存在)
const readMoreBtn = document.querySelector('.btn-readmore');
if (readMoreBtn) {
readMoreBtn.click();
}
};
// 初始触发一次
removeElements();
})();