【问题标题】:CSS rule to select pseudo-elements选择伪元素的 CSS 规则
【发布时间】:2019-03-16 08:33:43
【问题描述】:

我正在使用 Brave 浏览器阻止在线广告。一些网站开始在其服务器端将广告注入 HTML。 Brave 目前只允许通过提供 CSS 选择器来阻止元素。

我要阻止的元素是带有随机生成的类名的div(因此使用div.class-name 仅在刷新之前有效)。唯一的常量是带有content: "from our network" 的伪::before 元素。

我的问题是:我可以根据 ::before 的内容选择一个元素,而不使用任何 JavaScript(仅 CSS)吗?

【问题讨论】:

  • 不,你不能......但是尝试看看是否有一个属性或一些内联样式是相同的,或者他的随机类可能包含一个模式
  • 您也可以根据上下文选择div... div 所在的结构是什么?有什么有用的类可以挂在那里吗?
  • 没有我能辨别的结构——它是一堆嵌套的divs。如果你选错了,页面内容就没了。
  • @Traveling Tech Guy:如果 div 总是出现 n 层深,您可以根据需要从 "body" 重复 "> div" 多次以到达它。如果嵌套级别是随机的,那么是的,你很不走运。

标签: css css-selectors pseudo-element adblock


【解决方案1】:

您想根据 ::before 内容选择元素吗?

div::after {
  content: "generated content";
}

我认为这是不可能的

但是,您可以在类名中选择几个字符

div[class^='yourclassname'], div[class*=' yourclassname']{

}

https://codepen.io/gilbertlucas46/pen/xBjKOX

【讨论】:

  • 内容是不变的——类名是随机的。考虑到每次页面刷新都会生成类名,在类名中选择几个字符有什么帮助?
  • @Traveling Tech Guy:好吧,吉尔伯特可能会错误地假设随机类名的至少一部分是恒定的。但正如你我所知,广告往往不会在其随机类名中包含任何不变的内容。
猜你喜欢
  • 1970-01-01
  • 2016-01-04
  • 1970-01-01
  • 2015-06-27
  • 1970-01-01
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 2014-12-18
相关资源
最近更新 更多