此工具不针对论坛中任何人,仅用于维护论坛团结、友善的氛围,请勿用作他用。
鉴于最近很多用户反馈,屏蔽某用户之后,在话题列表中依然可以看到该用户的话题,希望可以看不到相关话题。
为了减少用户矛盾,保证论坛的团结、友善,特提供此油猴脚本,供需要的用户使用。
使用前,请将不希望显示的用户ID填入black_list中,例如:black_list=[“zhangsan”,“lisi”],就可以屏蔽张三和李四了。
武林秘籍
// ==UserScript==
// @name 屏蔽话题列表中特定发帖人的话题
// @namespace http://tampermonkey.net/
// @version 0.4
// @description 删除包含特定发帖人的主题,并在DOM变化时重新检测
// @match https://linux.do/*
// @match https://www.isharkfly.com/*
// @icon https://linux.do/uploads/default/optimized/1X/3a18b4b0da3e8cf96f7eea15241c3d251f28a39b_2_180x180.png
// @grant none
// @run-at document-idle
// ==/UserScript==
(function() {
'use strict';
// 定义黑名单
var black_list = [];
// 检查并删除符合条件的主题行
function checkAndRemoveRows(rows) {
rows.forEach(function(row) {
if (!row || row.nodeType !== 1 || !row.classList.contains('topic-list-item')) return;
var posters_td = row.querySelector('td.posters.topic-list-data');
if (posters_td) {
var a_tags = posters_td.querySelectorAll('a');
// 只取第一个 a 标签
var a = a_tags[0];
if (a && black_list.some(name => name.toLowerCase() === a.getAttribute('data-user-card').toLowerCase())) {
row.remove();
}
}
});
}
// 初始检测
function initialCheck() {
var rows = document.querySelectorAll('tr.topic-list-item');
checkAndRemoveRows(Array.from(rows)); // 将 NodeList 转换为数组
}
// 观察页面变化
const observer = new MutationObserver((mutations) => {
for (const mutation of mutations) {
if (mutation.addedNodes.length > 0) {
initialCheck();
break; // 减少循环次数
}
}
});
// 开始观察
observer.observe(document.body, { childList: true, subtree: true });
// 运行初始检测
initialCheck();
})();