如何实现或修复Stack Exchange平台的killfile用户屏蔽脚本
问题根因
- 匹配规则过于粗放:原脚本直接对整个评论、回答、问题容器做全内容模糊检索,存在两个严重问题:
- 只要普通内容文本中提到了你拉黑的用户名,对应的无辜内容会被误隐藏
- 「显示更多评论」控件属于评论区的子元素,全容器模糊匹配很容易误命中包含拉黑用户名的评论组容器,直接把「显示更多」按钮连带隐藏
- 未适配动态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
相关产品推荐
相关产品推荐

