You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现或修复Stack Exchange平台的killfile用户屏蔽脚本

问题根因

  • 匹配规则过于粗放:原脚本直接对整个评论、回答、问题容器做全内容模糊检索,存在两个严重问题:
    1. 只要普通内容文本中提到了你拉黑的用户名,对应的无辜内容会被误隐藏
    2. 「显示更多评论」控件属于评论区的子元素,全容器模糊匹配很容易误命中包含拉黑用户名的评论组容器,直接把「显示更多」按钮连带隐藏
  • 未适配动态DOM:Stack Exchange的评论为懒加载逻辑,只有点击「显示更多」才会插入后续评论的DOM,原脚本仅在页面初始加载时执行一次,无法处理新加载的内容,还可能和平台自带的动态加载事件逻辑冲突
  • 依赖的第三方jQuery版本过老,和平台当前内置的jQuery版本存在冲突风险

修复方案

替换为以下优化后的脚本即可,完全适配平台规则,不会破坏「显示更多评论」功能:

// ==UserScript==
// @name         Killfile Userscript for Stack Exchange
// @namespace    MonkeyScripts
// @version      0.2
// @description  Hide posts by abusive/irritating users
// @author       cas
// @match        https://*.stackexchange.com/*
// @match        https://*.stackoverflow.com/*
// @match        https://*.serverfault.com/*
// @match        https://*.superuser.com/*
// @match        https://*.askubuntu.com/*
// @grant        none
// ==/UserScript==

(function() {
    // 填入需要屏蔽的用户名,完全匹配规则
    const Trolls = ['Ned Trollton','Angry Stalker','loser12345'];

    function hideBlockedUserContent() {
        // 屏蔽对应作者的评论
        document.querySelectorAll('li.comment a.comment-user').forEach(userNode => {
            if (Trolls.includes(userNode.textContent.trim())) {
                userNode.closest('li.comment').style.display = 'none';
            }
        });
        // 屏蔽对应作者的回答
        document.querySelectorAll('div.answercell .user-details a').forEach(userNode => {
            if (Trolls.includes(userNode.textContent.trim())) {
                userNode.closest('div.answercell.post-layout--right').style.display = 'none';
            }
        });
        // 屏蔽对应作者的提问
        document.querySelectorAll('div.postcell .user-details a').forEach(userNode => {
            if (Trolls.includes(userNode.textContent.trim())) {
                userNode.closest('div.postcell.post-layout--right').style.display = 'none';
            }
        });
    }

    // 页面初始加载执行一次
    hideBlockedUserContent();

    // 监听DOM变动,自动处理动态加载的评论、翻页内容
    const domObserver = new MutationObserver(mutations => {
        if (mutations.some(m => m.addedNodes.length > 0)) {
            hideBlockedUserContent();
        }
    });
    domObserver.observe(document.body, { childList: true, subtree: true });
})();

核心优化说明

  • 移除第三方jQuery依赖,完全基于原生JS实现,彻底避免版本冲突
  • 所有匹配规则精准定位到作者名对应的DOM节点,不会误匹配内容文本,也不会误伤「显示更多评论」等平台控件
  • 新增DOM变动监听,动态加载的评论、翻页后新增的内容都会自动执行屏蔽逻辑
  • 采用用户名完全匹配规则,不会出现短用户名命中长用户名的误判问题

内容的提问来源于stack exchange,提问作者cas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:45:05