您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
仅供参考学习
当前为
// ==UserScript== // @name 玩转CSDN // @namespace http://tampermonkey.net/ // @version 0.1003 // @match *://blog.csdn.net/* // @icon https://source.unsplash.com/random // @description 仅供参考学习 // @author w2hi // @icon https://www.google.com/s2/favicons?domain=csdn.net // @grant none // ==/UserScript== (function() { 'use strict'; class CSDN{ construct(focusSwitch){ console.log('构造方法'); }; /* @name 复制 @func modifyCopyPriviledge: 修改权限 copy: 复制逻辑 */ modifyCopyPriviledge(codeElem,signElem){ //代码容器修改 codeElem.removeAttribute('onclick'); codeElem.style.setProperty('user-select','auto'); codeElem.setAttribute('id','code-'+i); codeElem.parentNode.style.setProperty('user-select','auto'); // 登录(不可用)容器修改 signElem.removeAttribute('onclick'); signElem.setAttribute('data-title','点击复制'); signElem.removeAttribute('data-report-click'); signElem.setAttribute('data-clipboard-action','copy'); signElem.setAttribute('aria-label','copied!'); signElem.setAttribute('data-clipboard-target','#code-'+i); }; copy(signElem) { let codeelem = null; try{ codeelem = signElem.parentNode; if(codeelem.id.indexOf('code')===-1){ // 父节点 throw new EvalError('值错误'); } }catch(err){// 兄弟节点 codeelem = signElem.previousElementSibling; } document.oncopy=function(e){ e.clipboardData.setData('text',codeelem.innerText); e.preventDefault(); document.oncopy=null; } document.execCommand("Copy");// 执行浏览器复制命令 signElem.setAttribute('data-title','复制成功'); signElem.style.cssText += 'background-color: green'; setTimeout(()=>{ // 先延时1000ms,再执行回调函数 signElem.setAttribute('data-title','点击复制'); signElem.style.removeProperty('background-color','green'); },1000); }; /* @name 专注模式 @func modifyFocusPriviledge: 修改专注权限 showFocusModel: 展开专注模式 */ modifyFocusPriviledge(mainBox, main){ // 修改toolbar let toolbar = document.querySelector('.csdn-side-toolbar'); let focusSwitch = document.querySelector('.option-box').cloneNode(true); focusSwitch.firstElementChild.src = 'https://s1.aigei.com/src/img/png/05/055f0df239ef4451a25be1e5c4617f96.png?imageMogr2/auto-'+ 'orient/thumbnail/!199x199r/gravity/Center/crop/199x199/quality/85/&e=1735488000&'+ 'token=P7S2Xpzfz11vAkASLTkfHN7Fw-oOZBecqeJaxypL:pxpJ0L3fOUppABVi15gOFs94eqk='; focusSwitch.style.background = "rgba(0,0,0,0.1)"; focusSwitch.firstElementChild.style.width = "200%"; focusSwitch.firstElementChild.style.display = "block"; // 去除初始鼠标放上有动态加载事件 // focusSwitch.lastElementChild.innerHTML = "专注<br/>模式"; focusSwitch.removeChild(focusSwitch.lastElementChild); toolbar.replaceChildren(focusSwitch); // 修改默认页面配置样式 main.removeAttribute('id'); focusSwitch.removeAttribute('mouseup'); mainBox.firstElementChild.nextElementSibling.style.removeProperty('z-index'); main.style.cssText += 'z-index:999;position:absolute'; main.style.display = 'none'; document.body.insertBefore(main, document.body.firstElementChild); return focusSwitch; }; showFocusModel(status, mainBox, main){ if(status===0){ // 进入专注模式 console.log(`----${status}: 专注模式----`) mainBox.style.display = 'none'; mainBox.nextElementSibling.style.display = 'none'; main.style.display = 'block'; console.log('主体可见\n全体不可见') // rightAside.style.setProperty('display','none'); // mainBox.firstElementChild.style.setProperty('display','auto'); // con.replaceChildren(mainBox.firstElementChild); }else{ // 默认-1 原始状态 console.log(`----${status}: 初始模式----`); mainBox.style.display = 'block'; mainBox.nextElementSibling.style.display = 'block'; main.style.display = 'none'; console.log('主体不可见\n全体可见') // mainBox.style.removeProperty('display','none'); // rightAside.style.removeProperty('display','none'); // con.replaceChildren(mainBox); // con.append(rightAside); } // document.body.replaceChild(mainContent,nodata); } }; let csdn = new CSDN(); let mainBox = document.getElementById('mainBox'); let main = mainBox.firstElementChild.cloneNode(true); let focusSwitch = csdn.modifyFocusPriviledge(mainBox, main); // let status = -1; focusSwitch.addEventListener('click', function(){ status = ~status; csdn.showFocusModel(status,mainBox,main); },'true'); let codes = document.querySelectorAll('#content_views pre code'); let signs = document.querySelectorAll('.signin'); for(var i=0;i<codes.length;i++){ let sign = signs[i]; // 代码容器权限修改 csdn.modifyCopyPriviledge(codes[i], signs[i]); // 增加登录(不可用)元素的点击事件(捕获-由子到根) sign.addEventListener('click', function(){ csdn.copy(this); },'true'); }; })();