答案1
如果Id
每次都是随机生成的,则需要找到该 DOM 元素要挂接的其他唯一属性。文本属性并不好,因为您希望没有其他节点会使用您正在过滤的文本,并且没有基于语言环境的翻译。
话虽如此,我在这个例子中使用了它,因为我不确定您正在使用的 AllMusic 网站上是否有更好的选择。
使用下划线find
函数,您可以选择的子节点document.body
并返回文本中包含“ad block”的第一个节点。
var blockElem = _.find(document.body.childNodes, function (elem) {
return elem.innerText && elem.innerText.toLowerCase().indexOf("ad block") != -1 }
);
您现在有了 DOM 元素,您可以对其进行操作(删除、隐藏等)。
另一种方法是使用jQuery 的filter
功能是:
var blockElem = $("body div").filter(function() {
return $(this).text().toLowerCase().indexOf("ad block") != -1;
}).first();
附言:我觉得这更像是 StackOverflow 类型的问题。
答案2
Adblock Plus 隐藏过滤器由两部分组成:<domain>##<selector>
域部分只是一个以逗号分隔的域列表,其中元素应该被隐藏。
选择器部分定义哪些元素应该被隐藏,并遵循CSS 选择器标准。因此,我建议你学习 CSS 选择器,而不是学习如何编写过滤器,因为有很多关于如何编写这些过滤器的有用资源。
例如,在这种情况下,了解可以根据元素在文档中的位置来选择元素可能会有所帮助。例如body > :nth-child(1)
将选择正文中的第一个元素。对于更具体的选择器,您需要检查其哪些特征保持不变,哪些特征发生变化。