// ==UserScript==
// @name CSDN助手
// @namespace http://tampermonkey.net/
// @version 0.41
// @description CSDN未登录复制、复制代码不带原文链接、禁用登录弹窗、未登录查看所有评论、评论完全展开
// @author Gandalf_jiajun
// @include https://blog.csdn.net/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant none
// @note 2022.01.28 更新禁用提示登录弹窗。
// @note 2022.01.29 更新评论区子项显示及自动展开。
// @note 2022.01.30 V0.21 更新评论区表情包显示异常。
// @note 2022.01.31 V0.22 修复评论区样式显示异常问题。
// @note 2022.02.15 V0.31 破解阅读文章必须关注作者功能。
// @note 2022.03.01 v0.40 随机cookie欺骗。伪造登录屏蔽弹窗。
// @note 2022.03.06 v0.41 删除随机cookie欺骗。优化伪造hide_login cookie登录屏蔽弹窗。修复bug。
//觉得本脚本还可以的可以给个好评,觉得有问题的可以留言,谢谢各位!
// @downloadURL https://update.greasyfork.icu/scripts/439112/CSDN%E5%8A%A9%E6%89%8B.user.js
// @updateURL https://update.greasyfork.icu/scripts/439112/CSDN%E5%8A%A9%E6%89%8B.meta.js
// ==/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');
let domMask = document.querySelector('.hide-article-box') || null;
// console.log(tag_a, tag_b);
appendStyle(tag_a);
appendStyle(tag_b);
const getCompleteDom = () => {
if (domMask) {
let completeDom = document.querySelectorAll('#article_content')[0];
completeDom.style.height = "inherit";
completeDom.style.overflow = "auto";
domMask.innerHTML = "";
domMask.style.display = "none";
}
};
// 替换表情包
const replaceDoge = (str) => { // [face]emoji:062.png[/face]
return str.replace(/\[face\]([^\]]+):([^\[]+)\[\/face\]/g, ``)
};
const replaceComment = (str) => {
let newCom;
newCom = replaceDoge(str);
return newCom;
};
// 生成子项dom
const createSubDom = (arr) => {
let dom = `