javascript - 隐藏某些用户的评论?

标签 javascript jquery dom

我正在使用 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/

相关文章:

javascript - 将变量添加到动画CSS

javascript - 如何使用 GET 方法从 url 获取 xml 数据

css - 在不破坏向前兼容性的情况下定位 Shadow DOM 元素

javascript - 了解发生了什么 obj 和两个 brack 值等于 {some object data}

javascript - 查询 : Select option of dropdown based on textbox text

javascript - React-router v4 页面刷新不起作用

javascript - 只关注第一个元素

Javascript jQuery 用一个值替换一个变量

html - 浏览器如何加载图像?大拇指有必要吗?

javascript - <option>、<li>、<td> 的 Vanilla 自定义元素转发器