我正在使用 Chrome 扩展 Web Override对于一些事情来说它效果很好。现在我正在尝试隐藏 Stack Overflow 上某些用户的评论,但似乎不起作用。我认为这就是评论加载的方式。
这是 JavaScript:
$(function() {
$('.comment-user:contains("DevilsAdvocate")').closest('.comment').hide();
});
如果我简单地将 $('.comment-user:contains("DevilsAdvocate")').closest('.comment').hide();
粘贴到控制台中,它将隐藏我的评论,但当我正常加载页面时它不会这样做。
最佳答案
一种可能的解决方案是使用 MutationObserver()
.
这将允许您监听评论部分的任何更改并做出相应的 react 。下面可以看到一个粗略的实现。您创建观察者并为其提供隐藏功能,以便每次发生突变时它都会隐藏所有相关注释。
然后你告诉你的观察者观看帖子的评论部分。我确信您可以编写一种更加jquery 的方式来执行此操作。现在它只关心它找到的第一个 .comments
部分。这将监听任何子级更改、属性更改和子树更改。
var observer = new MutationObserver(function (mutations) {
$('.comment-user:contains("DevilsAdvocate")').closest('.comment').hide();
});
observer.observe(document.querySelectorAll(".comments")[0], {
attributes: true,
childList: true,
characterData: true,
subtree: true
});
我不知道这会对性能产生影响,并且 jQuery 可能有自己的方式来观察 DOM 变化。一个更好的方法是使用评论 JavaScript 代码进行面向方面的编程,以便您可以在发布新评论后立即调用您的隐藏器,甚至可以在那里过滤评论。
或者,据我所知不受支持,监听 Stack Exchange API 可能发出的事件,让您知道何时加载新评论。
随之而来的问题是,我不相信 Stack Exchange 客户端 JavaScript 是任何公共(public) API 的一部分,因此对其进行任何更改都可能会破坏您的代码。
关于javascript - 隐藏某些用户的评论?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35165331/