StackExchange黑名单

时间:2014-03-19 22:21:26

标签: javascript css greasemonkey

假设您对我的帖子感到恼火,并希望隐藏Stack Overflow的所有评论。我知道如何创建自定义CSS来隐藏我的用户名:

a[href$="what"] {
    display:none !important;
}

不幸的是CSS不允许我引用父元素,所以这将留下评论的文本。

如何将父级或前级兄弟隐藏到该链接标记?


我不是要求CSS选择器!我知道它不存在。请在结束前阅读问题(并在提供答案之前告诉我在我的问题中已经提到的内容)。

我问你如何在没有相关CSS选择器的情况下选择DOM元素。我相信有JS解决方案,但我无法使用它们。也许还有其他选择,因此我并没有特别要求JS。如果你告诉我如何用PHP解析页面并通过另一个域显示它,那对我来说完全没问题。

Greasemonkey可能会这样做的提示根本没有帮助。解释如何做到这一点。让它在您的机器上工作并发布详细说明。我无法使用任何可用的脚本。

4 个答案:

答案 0 :(得分:2)

你不能,因为CSS无法选择父节点并为其应用样式。你需要使用JavaScript。如果专门用于创建用户可修改的布局,可能通过Greasemonkey Firefox plugin(或另一个浏览器中的类似插件)。

答案 1 :(得分:1)

选择器级别4草稿定义了选择器的subject,允许您使用

!* > a[href$="what"] {  }
!* + a[href$="what"] {  }

但是,AFAIK浏览器尚不支持它。

并且还注意到它是complete选择器配置文件的一项功能,因此它对性能不敏感。

答案 2 :(得分:0)

使用JavaScript很容易:

var comments = [].slice.call(document.querySelectorAll('a[href$="what"]'))
      .map(function(el){ return el.parentNode; })
      .filter(function(el){ return el.classList.contains('comment-body'); });

它确实:

  1. 获取querySelectorAll的所有锚点,并将生成的NodeList转换为Array
  2. 创建一个新数组,其中每个元素都是前一个数组中相应元素的parentNode
  3. 过滤以删除不包含评论的元素,例如问题底部的链接。

答案 3 :(得分:0)

安装Greasemonkey,然后单击this link以安装脚本。

该脚本使用jQuery,它的主体只有一行:

$('.comment:has(a.comment-user[href$="/what"])').remove()

说明: 上面的代码可以remove任何类commenthas的元素作为其后代,是一个类comment-user并以/what结尾的链接。