// ==UserScript== // @name CSDN助手 // @namespace http://tampermonkey.net/ // @version 0.11 // @description CSDN未登录复制、复制代码不带原文链接、禁用登录弹窗、未登录查看所有评论、评论完全展开 // @author Gandalf_jiajun // @include https://blog.csdn.net/* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // @downloadURL none // ==/UserScript== (function() { 'use strict'; const appendStyle = (tagArr) => { tagArr.forEach(element => { element.style.userSelect = 'text'; element.style.webkitUserSelect = 'text'; }); }; const translateParams = (params) => { let str = '?'; for(let i in params) { str += i + '=' + params[i] + '&'; } return str.substring(0, str.length - 1); }; const request = (method, url, params) => { return new Promise((resolve, reject) => { let newUrl = params ? url + translateParams(params) : url; const xml = new XMLHttpRequest; xml.open(method, newUrl, true); xml.send(); xml.onreadystatechange = () => { if(xml.readyState == 4 && xml.status == 200) { resolve(JSON.parse(xml.responseText)); } }; }) }; let tag_a = document.querySelectorAll('#content_views pre'); let tag_b = document.querySelectorAll('#content_views pre code'); // console.log(tag_a, tag_b); appendStyle(tag_a); appendStyle(tag_b); // 生成dom const createDom = (arr) => { let dom = `
`; //
arr.forEach((v, i) => { let commentDom = ``; dom += commentDom; }) dom += ``; return dom; }; // 获取评论 const getComment = async () => { try { let articalId = window.location.href.split('/article/details/')[1].split('?')[0]; let commentUrl = '/phoenix/web/v1/comment/list/' + articalId; let params = { page: 1, size: 999, fold: 'unfold', commentId: '' }; const res = await request('post', commentUrl, params); let dom = createDom(res.data.list); let parentNode = document.getElementsByClassName('comment-list-container')[0]; let parentNode_chrome = document.getElementsByClassName('unlogin-comment-box-new')[0]; if (parentNode_chrome && window.navigator.userAgent.indexOf('Chrome')) { // 判断是否为谷歌浏览器 parentNode_chrome.innerHTML = `
评论${res.data.count}
` + dom; } else { parentNode.innerHTML = dom; } } catch(err) { console.log(err); } }; getComment(); setTimeout(() => { window.csdn ? window.csdn.copyright.init('', '') : ''; window.csdn.loginBox.show = function() {}; // 禁用登录弹窗 }, 0); })();