
答案1
如果Id
每次都是隨機產生的,您需要找到該 DOM 元素唯一的其他屬性來掛鉤。文字屬性不是很好,因為您希望沒有其他節點會使用您正在過濾的文本,並且沒有基於區域設定的翻譯。
話雖如此,我在這個例子中使用了它,因為我不確定您正在使用的 AllMusic 網站上有什麼更好的東西。
使用下劃線的find
函數,您可以選擇 的子節點document.body
並傳回文字中包含「廣告區塊」的第一個節點。
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)
將選擇正文中的第一個元素。對於更具體的選擇器,您需要檢查其哪些特徵保持不變以及哪些特徵會變更。