CSDN未登录复制、复制代码不带原文链接、禁用登录弹窗、未登录查看所有评论、评论完全展开
当前为
// ==UserScript==
// @name CSDN助手
// @namespace http://tampermonkey.net/
// @version 0.1
// @description CSDN未登录复制、复制代码不带原文链接、禁用登录弹窗、未登录查看所有评论、评论完全展开
// @author Gandalf_jiajun
// @include https://blog.csdn.net/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant 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 = `<div class="comment-list-box">`; // </div>
arr.forEach((v, i) => {
let commentDom = `<ul class="comment-list">
<li class="comment-line-box " data-commentid="${v.info.commentId}" data-replyname="${v.info.parentUserName}">
<div class="comment-list-item">
<a class="comment-list-href" target="_blank" href="https://blog.csdn.net/${v.info.parentUserName}">
<img src=${v.info.avatar} username=${v.info.parentUserName} alt=${v.info.parentUserName} class="avatar">
</a>
<div class="right-box ">
<div class="new-info-box clearfix">
<div class="comment-top">
<div class="user-box">
<a class="name-href" target="_blank" href="https://blog.csdn.net/${v.info.parentUserName}">
<span class="name ">${v.info.nickName}</span>
</a>
<span class="date" title="${v.info.postTime}">${v.info.dateFormat}</span>
</div>
<div class="opt-comment">
<a class="btn-bt btn-report">
<img class="btn-report-img" src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentLookMore.png" title="">
<div class="hide-box">
<span data-type="report" class="hide-item hide-report"> 举报</span>
</div>
</a>
<img class="comment_img_replay" src="https://csdnimg.cn/release/blogv2/dist/pc/img/newCommentReplyWhite.png">
<a class="btn-bt btn-reply" data-type="reply" data-flag="true">回复</a>
</div>
<div class="comment-like " data-commentid="${v.info.commentId}">
<img class="comment-like-img unclickImg" src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentLikeWhite.png" title="点赞">
<img class="comment-like-img comment-like-img-hover" style="display:none" src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentLikeHover.png" title="点赞">
<img class="comment-like-img clickedImg" src="https://csdnimg.cn/release/blogv2/dist/pc/img/commentLikeActive.png" title="取消点赞">
<span></span>
</div>
</div>
<div class="comment-center">
<div class="new-comment">${v.info.content}</div>
</div>
</div>
</div>
</div>
</li>
</ul>`;
dom += commentDom;
})
dom += `</div>`;
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 = `<div class="comment-title">评论<span>${res.data.count}</span></div>` + dom;
} else {
parentNode.innerHTML = dom;
}
} catch(err) {
console.log(err);
}
};
getComment();
setTimeout(() => {
window.csdn ? window.csdn.copyright.init('', '') : '';
document.querySelector('#btnAttent').id = 'aaa'; // 禁用登录弹窗
}, 0);
})();