csdn上的资源对于程序员来说非常有用,但是代码确不让直接复制,让程序员感觉非常不方便,下面介绍几个方法来解决这个问题。
方法一
- 在要复制的代码页面按F12
- 在Console界面输入以下内容
Array.from(document.querySelectorAll("code")).map(a=>{a.style="user-select:text;"})
$("#content_views").off("copy")
这样就可以不用登陆进行代码复制了。就这么简单!
方法二
如果觉得每次打开控制台执行代码比较麻烦,可以考虑做成浏览器插件。
- 编写content-script.js文件,代码如下
// 跳过关注博主展开全文
var article_content = document.getElementById("article_content");
if (article_content) {
article_content.removeAttribute("style");
}
var code=document.getElementsByTagName('code');
for(var i=code.length-1;i>=0;i--)
{
code[i].style.userSelect='text';
}
(function () {
const elements = document.querySelectorAll('*');
elements.forEach(element => {
element.addEventListener('copy', function (e) {
e.stopPropagation();
});
})
})();
- 编写manifest.json文件
{
"manifest_version": 2,
"name": "csdn复制代码",
"version": "1.0.0",
"description": "能够在不登陆的状态下复制CSDN的代码",
"icons":
{
"16" : "img/icon.png",
"48" : "img/icon.png",
"128" : "img/icon.png"
},
"content_scripts":
[
{
"matches": ["https://blog.csdn.net/*"],
"js": ["js/content-script.js"],
"css": ["css/style.css"],
"run_at": "document_end"
}
],
"permissions":
[
"contextMenus", // 右键菜单
"tabs", // 标签
"notifications", // 通知
"webRequest", // web请求
"webRequestBlocking",
"storage", // 插件本地存储
"http://*/*", // 可以通过executeScript或者insertCSS访问的网站
"https://*/*" // 可以通过executeScript或者insertCSS访问的网站
]
}
- 在谷歌浏览器 扩展程序--管理扩展程序--加载已解压的扩展程序,选择自己的插件路径进行加载,就可以实现复制自由了。
踩坑记录:
- 在谷歌浏览器中加载扩展程序需要开启开发者模式。
- 使用谷歌浏览器时不能用无痕模式,否则可能导致插件不生效。