Greasy Fork is available in English.
解决未登录时CSDN不能复制代码的问题
效果:


作为程序猿,应该会经常去csdn参(chao)考(xi)代码,今天在复制一篇文章的代码的时候,突然发现需要登录才能复制,但是我用github授权登录的时候居然失败了!
突发奇想,写个脚本解除这个限制吧!
稍微看一下文档结构,不难发现禁止选中复制就是css的user-select属性设置成了none而已,只要改回text即可:
1 2 3 4 5 | // 将所有代码区域变为可选document.querySelectorAll("code").forEach(function(item) { item.style = item.style + ";user-select: text !important;"; return item;}) |
顺便也把右侧的登录复制按钮变成复制全部了:
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);} |