2016-01-27 32 views
0

我有一個看起來像這樣的頁面上的元素:Adblock Plus的 - 白名單規則

<a data-mytype="myvalue" href="http://example.com/promo/page">...</a> 

,該元素是由以下ABP規則隱藏(存在於我使用的過濾器訂閱之一):

##[href*="/promo"] 

如何編寫白名單規則,該規則將排除該元素被Adblock Plus根據特定的屬性/值對隱藏 - 如data-mytype="myvalue"之一?

我檢查了Writing Adblock Plus filtersAdblock Plus filters explained頁面,但我還沒有想到如何(成功)根據指定的屬性編寫過濾器。

兩個頁面提的是標準的CSS選擇器應該工作,但是這似乎並沒有工作:

@@a[data-mytype="myvalue"] 

我也曾嘗試以下操作:

#@#[href*="/promo"][data-mytype="myvalue"] 

我缺少什麼?

注:我不想要一個規則,將取消##[href*="/promo"],我正在尋找一個規則,將白名單元素只基於特定的屬性/值對。

編輯(2016-03-17):澄清我的問題一點點。

回答

1

你先禁用現有的規則:

#@#[href*="/promo"] 

注意的是,選擇具有是相同的,否則元素隱藏例外將不適用。然後你可以添加自己的規則,一個將考慮data-mytype屬性:

##[href*="/promo"]:not([data-mytype="myvalue"]) 

的這兩個規則的組合應該有你想要的效果。供參考::not() CSS pseudo-class

+0

因此,ABP沒有將黑名單列入白名單而沒有明確的取消黑名單規則?我認爲這個白名單優先於布蘭克斯主義者。基本上,ABP會根據黑名單規則制定要隱藏的元素列表,然後從該列表中刪除與白名單規則匹配的所有元素,所有這些在實際隱藏所述元素之前完成。 –

+0

@SilviuG:元素隱藏例外不適用於元素,它們適用於元素隱藏規則。所以規則的選擇器部分必須是相同的,否則它將不起作用。這具有技術上的原因,檢測到多個規則匹配相同的元素並決定應該應用哪一個是不可能的。 –

+0

感謝您對技術原因的澄清。這不是我所希望的答案,但至少現在我有一些可靠的工作。 –

0

規則###yourdiv可以通過#@##yourdiv##.yourclass#@#.yourclass)來禁用

你的情況:#@#[data-mytype="myvalue"]

+0

我已經澄清了我的問題,請重新檢查一下。 –

+0

「@@ || example.com^$ elemhide'或者'@@ || example.com^$ generichide' 如果不是你要找的東西給我一個Adblock Plus + Easylist隱藏鏈接的例子。 – SMed79

+0

測試頁面包含示例鏈接。另外,我不能在我的規則中包含example.com,我需要一個適用於任何域的通用規則。 –