Greasy Fork is available in English.

去除CSDN代码登录后复制及全文关注后查看的限制

解决未登录时CSDN不能复制代码的问题

ئاپتورى
zhzhch335
بۈگۈن قاچىلانغىنى
2
جەمئىي قاچىلانغىنى
1,680
باھا نومۇرى
2 1 0
نەشرى
1.7
قۇرۇلغان ۋاقتى
2022-03-22
يېڭىلانغان ۋاقتى
2022-06-23
ئىجازەتنامىسى
يوق
قوللايدىغىنى

效果:


之前


之后










作为程序猿,应该会经常去csdn参(chao)考(xi)代码,今天在复制一篇文章的代码的时候,突然发现需要登录才能复制,但是我用github授权登录的时候居然失败了!

突发奇想,写个脚本解除这个限制吧!

稍微看一下文档结构,不难发现禁止选中复制就是css的user-select属性设置成了none而已,只要改回text即可:






[JavaScript]
1
2
3
4
5
// 将所有代码区域变为可选
document.querySelectorAll("code").forEach(function(item) {
    item.style = item.style + ";user-select: text !important;";
    return item;
})



顺便也把右侧的登录复制按钮变成复制全部了:

[JavaScript]
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
// 将所有登录复制按钮变成全选
document.querySelectorAll(".hljs-button").forEach(function(item) {
    item.dataset.title = "复制全部";
    return item;
})
// 重写登录复制方法
window.hljs.signin = e => {
    var preNode = e.path.filter(item => item.tagName == "PRE")[0];
    // 选中一段文字
    let selection = window.getSelection();
    let range = document.createRange();
    range.selectNode(preNode);
    selection.removeAllRanges();
    selection.addRange(range);
    // 执行复制命令
    document.execCommand('copy', false, null);
    e.target.dataset.title = "复制成功";
    setTimeout(() => {
        e.target.dataset.title = "复制全部";
    },1000);
}