吾爱破解论坛上的水贴非常多,有些回复只有“谢谢楼主”四个字,还占用了大量网页空间,看着就很不爽,要是有个脚本把它们折叠掉就好多了,因此有了这个脚本。
功能:
-
自动折叠被屏蔽的贴子:帖子都没了还看啥?不如折掉释放空间。原理:帖子被屏蔽时,作者头像会一起被屏蔽,脚本通过检查头像从而判断帖子是否被屏蔽。查看效果请去 『UnPackMe◇CrackMe◇KeyGenMe◇ReverseMe』区 。主贴被屏蔽不会被折叠。
-
自动折叠疑似灌水贴:四个字占用十行字的空间,把有效回帖都淹没了,折叠掉更清爽。原理:脚本收录了论坛中常见的灌水词,这些词没有实际意义。脚本会将回复中的这些词去掉,再看剩余的字数,如果不满三个字就视作水贴。楼主的帖子不会被折叠。查看效果请看 论坛上的脚本发布贴 。
-
手动折叠:在每层楼的顶部有“折叠此层”按钮(右下角暂无),点击即可折叠。
折叠原理:
将楼层的 display
属性设为 none
,使楼层不显示,并在原有楼层下方插入展开按钮。展开按钮就是用论坛的“下一页”按钮改的。
下载地址及注意事项:
下载地址:吾爱折叠 - 自动折叠水贴
注意:此脚本与 吾爱破解论坛增强 的自动翻页功能及其它自动翻页脚本不兼容,您需要关闭这些脚本或其中的单个功能。
代码:
// ==UserScript==
// @name 吾爱折叠 - 自动折叠水贴
// @namespace peasoft.github.io
// @match *://www.52pojie.cn/forum.php?*mod=viewthread*
// @match *://www.52pojie.cn/thread-*
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_registerMenuCommand
// @grant GM_unregisterMenuCommand
// @grant GM_notification
// @version 1.0
// @author 陆鎏澄
// @description 在吾爱破解论坛手动或自动折叠不想看到的帖子,如水贴和已被屏蔽的帖子。
// @run-at document-end
// @icon https://www.52pojie.cn/favicon.ico
// @license CC BY-NC-SA
// ==/UserScript==
// 拦截词后续还会更新,欢迎补充!注意:本贴中的代码不会定时更新,最新代码请见安装地址!
const stopWordsStr = "\t \n ( ) [ ] { } < > , . ? ! \' \" : ; / | \\ + - _ ( ) 【 】 《 》 , 。 ? ! ‘ ’ “ ” : ; 、· … — 我 你 大佬 大神 大牛 膜 拜 什么 怎么样 怎么 感 谢 觉 可能 好像 分享 虽然 但是 有 用 没用 没什么用 不上 帮 帮忙 顶 一下 不懂 软件 是 个 这 那 哪 的 得 地 了 啦 拉 辣 过 收藏 加分 点赞 优秀 了解 支持 学习 学 到 真 很 好 啊 厉害 试 看 观 望 前排 后排 进 来 吧 呢 哈 嘛 阿 呵 哎 唉 也 太 极 绝 几 就 愣 啥 6"
const stopWords = stopWordsStr.split(' ');
let config = {};
const keys = {"noBlocked": "自动折叠被屏蔽的贴子", "noJunk": "自动折叠疑似灌水贴"};
let menuIds = [];
function readConfig(){
for (const key in keys) {
config[key] = GM_getValue(key);
if (config[key] === undefined) {
GM_setValue(key, true);
config[key] = true;
}
}
}
function switchConfig(key){
config[key] = !config[key];
GM_setValue(key, config[key]);
unregMenu();
regMenu();
GM_notification({text: "设置将在刷新页面后生效!\n(点此刷新页面)", title: "吾爱折叠", onclick: () => {location.reload()}});
}
function regMenu(){
for (const key in keys) {
menuIds.push(GM_registerMenuCommand((config[key]?'✅':'❌')+' '+keys[key], () => {switchConfig(key)}));
}
}
function unregMenu(){
menuIds.forEach(id => {GM_unregisterMenuCommand(id)});
menuIds = [];
}
function hidePost(post, action = "显示被折叠的楼层 ↧"){
post.style.display = "none";
if (post.nextElementSibling) {
post.nextElementSibling.style.display = "unset";
return;
}
let showBtn = document.createElement("div");
showBtn.className = "pgbtn";
showBtn.style.display = "unset";
showBtn.insertAdjacentHTML("beforeend",'<a href="javascript:;" hidefocus="true" class="bm_h" style="margin-bottom: 0; border-radius: 0">'+action+'</a>');
showBtn.addEventListener("click", showPost);
post.parentNode.appendChild(showBtn);
}
function showPost(){
this.previousElementSibling.style.display = '';
this.style.display = "none";
}
function hidePostH(){
hidePost(this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode);
}
function showButtons(){
let headers = document.querySelectorAll("div.pti > div.authi");
headers.forEach(header => {
header.insertAdjacentHTML("beforeend",'<span class="pipe">|</span>');
if (header.querySelector("span.none")) {
header.lastChild.classList.add("show");
}
header.insertAdjacentHTML("beforeend",'<a href="javascript:;">折叠此层</a>');
header.lastChild.addEventListener("click", hidePostH);
if (header.querySelector("span.none")) {
header.lastChild.classList.add("show");
}
});
}
function autoHide(){
let avatars = document.querySelectorAll("div.pls > div > div.avatar");
avatars.forEach(avatar => {
const post = avatar.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
if (!post.classList.contains("res-postfirst")) {
const author = post.querySelector("div.pls > div.pi > div.authi > a.xw1").innerText;
const authorHTML = '<span style="letter-spacing: normal">'+author+'</span> ';
if (config["noBlocked"] && avatar.innerText == "头像被屏蔽") {
hidePost(post, authorHTML+"的帖子被管理员或版主屏蔽");
}
else {
if (config["noJunk"] && !post.querySelector("div.pti > div.authi > span.firstauthor")){
// 不屏蔽楼主
let text = post.querySelector("td.t_f").innerText.replaceAll(' ','');
stopWords.forEach(word => {
text = text.replaceAll(word, '');
});
if (text.length < 3) {
hidePost(post, authorHTML+"发布的疑似水贴被自动折叠")
}
}
}
}
});
}
readConfig();
regMenu();
autoHide();
showButtons();
如无特殊声明,本站所有文章均采用 CC BY-NC-SA 4.0 协议发布。