# 【眼不见、心不烦】教你彻底屏蔽xxx用户的所有主题及回复

**URL:** <https://forum.freemdict.com/t/topic/9954>\
**Category:** 软件经验交流展望\
**Created:** [2021 年12 月 21 日 02:05 UTC](https://forum.freemdict.com/t/topic/9954 "2021-12-21T02:05:14Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

作者： ![okayer](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/okayer/32/16083_2.png) [@okayer](https://forum.freemdict.com/u/okayer)\
发布日期： [2021 年12 月 21 日 02:05 UTC](https://forum.freemdict.com/t/topic/9954/1 "2021-12-21T02:05:15Z")

</div>

以下在Chrome浏览器测试通过。

1. 安装 Tampermonkey 插件

官网：[https://www.tampermonkey.net/](https://www.tampermonkey.net/)

Chrome商店: [Tampermonkey - Chrome Web Store](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo)

1. 插件安装完成后，进入Tampermonkey 的 Options界面 ，点击右上角 ”+“， 增加新脚本，保存，然后刷新论坛即可。

下面的代码用来屏蔽主题。

```auto
// ==UserScript==
// @name Discourse POST blocking
// @version 1
// @grant none
// @include https://forum.freemdict.com/*
// ==/UserScript==

const blockNames = ["要屏蔽的用户名"];

const hideElements = () => {

	for (const username of blockNames) {
		document.querySelectorAll(
			`.posters.topic-list-data [data-user-card="${username}"]`
		).forEach((elt) => {
			elt.parentNode.parentNode.style.display = "none"
		});
	};

    	for (const username of blockNames) {
		document.querySelectorAll(
			`.names.trigger-user-card .first.username [data-user-card="${username}"]`
		).forEach((elt) => {
			elt.parentNode.parentNode.parentNode.parentNode.parentNode.style.display = "none"
		});
	};
};

const MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;

const observer = new MutationObserver((mutations) => {
	hideElements();
});

observer.observe(document.body, {
	attributes: true,
	childList: true,
	subtree: true
})

```

代码来源： [Discourse Functionality Query: User blocking - #7 by jamesnvc - Discourse forum Feedback - SWI-Prolog](https://swi-prolog.discourse.group/t/discourse-functionality-query-user-blocking/1242/7)

---

<div class="post-metadata">

作者： ![okayer](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/okayer/32/16083_2.png) [@okayer](https://forum.freemdict.com/u/okayer)\
发布日期： [2021 年12 月 21 日 03:08 UTC](https://forum.freemdict.com/t/topic/9954/2 "2021-12-21T03:08:50Z")

</div>

有懂网页js的大佬帮改进一下吧，发现上面代码太粗暴，只取第一个用户名才合理 🤣。

要是一并实现屏蔽用户回帖就太好了，现在discourse所谓的屏蔽，只是折叠隐藏，效果不佳，同样碍眼。

---

<div class="post-metadata">

作者： ![jiangws](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/jiangws/32/18560_2.png) [@jiangws](https://forum.freemdict.com/u/jiangws)\
发布日期： [2021 年12 月 21 日 03:17 UTC](https://forum.freemdict.com/t/topic/9954/3 "2021-12-21T03:17:10Z")

</div>

你这东西太好了，每次Mute主题太累。

---

<div class="post-metadata">

作者： ![shiruxue](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/bbe5ce/32.png) [@shiruxue](https://forum.freemdict.com/u/shiruxue)\
发布日期： [2021 年12 月 21 日 04:19 UTC](https://forum.freemdict.com/t/topic/9954/4 "2021-12-21T04:19:22Z")

</div>

能按“关键字”屏蔽吗？比如说屏蔽“匿名”？

---

<div class="post-metadata">

作者： ![okayer](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/okayer/32/16083_2.png) [@okayer](https://forum.freemdict.com/u/okayer)\
发布日期： [2021 年12 月 26 日 13:14 UTC](https://forum.freemdict.com/t/topic/9954/5 "2021-12-26T13:14:13Z")

</div>

下面的代码用来 彻底屏蔽以【匿名】开头用户的所有回帖。

又比如我屏蔽我自己。

 ![blk](https://forumcdn.freemdict.com/uploads/default/original/3X/3/1/317de928d3fa2bd0b130d1443924b13efd839e9c.png)

```auto
// ==UserScript==
// @name Discourse single blocking
// @version 1
// @grant none
// @include https://forum.freemdict.com/*
// ==/UserScript==

const blockNames = ["匿名","你要屏蔽的用户"];

const hideElements = () => {

    	for (const username of blockNames) {
		document.querySelectorAll(
			`.names.trigger-user-card .first.username [data-user-card^="${username}"]`
		).forEach((elt) => {
			elt.parentNode.parentNode.parentNode.parentNode.parentNode.style.display = "none"
		});
	};
};

const MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;

const observer = new MutationObserver((mutations) => {
	hideElements();
});

observer.observe(document.body, {
	attributes: true,
	childList: true,
	subtree: true
})

```

---

<div class="post-metadata">

作者： ![Zero](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/z/a88e57/32.png) [@Zero](https://forum.freemdict.com/u/Zero)\
发布日期： [2021 年12 月 26 日 13:48 UTC](https://forum.freemdict.com/t/topic/9954/6 "2021-12-26T13:48:17Z")

</div>

![Screen Shot 2021-12-26 at 9.41.16 PM](https://forumcdn.freemdict.com/uploads/default/original/3X/b/b/bb24cf5eda0a163a5760fa4052c831a88ba8be7a.png)  
 ![Screen Shot 2021-12-26 at 9.42.41 PM](https://forumcdn.freemdict.com/uploads/default/original/3X/7/9/796dabc4d7ebe3aa7e4f1ef7692c3af518106797.png)

论坛功能配合使用：  
点击要屏蔽的用户进入该用户页面，右上角点击Normal或常规，弹出菜单选择“ignored”，或“已忽略”，然后进入忽略事件持续时间设置，选择“Forever”，或“永远”。

论坛页面不显示任何该用户的图标：  
Mac用户，Safari浏览器有一个 Cascadea 插件，在freemdict.com的css自定义上添加

a[title=“要屏蔽的用户名”],  
a[href\*=“要屏蔽的用户名”] {  
display: none !important;  
}
