前言:
我是為了要隱藏一個因為 ABP 把廣告擋掉後,卻沒有把空間刪完全的一個問題。正常來說是只要用到下方的基本功能即可(擋網址、擋網域)。但我這個必須要擋掉元件(div)才可以解決那個問題。
我使用到的部分是元素隱藏:基本規則與元素隱藏:限定只在特定網域使用規則。
www.afterelton.com#div(promoarea)
元素隱藏:基本規則
有時你可能會發覺無法阻擋某些網告,因為那些廣告內嵌於網頁文字之中。如果看原始碼的話,可能發現這樣的語法:
<div class="textad">
Cheapest tofu, only here and now!
</div>
<div id="sponsorad">
Really cheap tofu, click here!
</div>
<textad>
Only here you get the best tofu!
</textad>
因為你必須下載網頁內容,所以你也會下載到其中你所不想看到的的廣告。對於這種情況,你可以做的就是-把這些廣告藏起來,這樣你就不會看到那些廣告了。這也就是元素隱藏(Element Hiding)這項功能的目的。
上面這段原始碼中的第一則廣告是在一個擁有 class 屬性為「textad」的 div 元素內,用「#div(textad)」可以把它給隱藏起來。你也可以用相同的方式改由ID屬性來隱藏元素,例如: 「#div(sponsorad)」會隱藏上面原始碼中的第二則廣告。你也可以不必指定元素名稱,用「#*(sponsorad)」也可以。你也可以僅指定要阻擋的元素名稱,例如: 「#textad」可以阻擋第三則廣告。
那麼,你該如何知道,要把什麼東西納入元素隱藏的規則呢?你有兩個選擇,一是直接看網頁的原始碼,並自行找出廣告所在;或者用 DOM Inspector(Firefox 使用者必須在安裝 Firefox 時選「自訂安裝」並將相關選項打勾,Firefox 才會安裝 DOM Inspector)。要能夠順利使用此功能,你需要有 HTML 的基礎。
注意:元素隱藏規則與普通過濾規則的工作方式有很大的差別。元素隱藏規則不支援萬用字元、不支援阻擋次數統計(hit count)、且會忽略例外規則。
元素隱藏:限定只在特定網域使用規則
通常你只想要隱藏特定網站的特定廣告,而不希望規則會作用於其他網站。例如: 「#*(sponsor)」可能會把某些網站的有效代碼也隱藏了。但如果你把隱藏規則寫成「example.com#*(sponsor)」,這規則就只會作用在 http://example.com/ 與 http://something.example.com/,但不作用在 http://example.org/。你也可以指定多個網域-只要用逗號(,)分隔即可,例如: 「domain1.example,domain2.example,domain3.example#*(sponsor)」。
注意:由於元素隱藏實作方式的關係,你只可以將隱藏規則限制於完整的網域名稱(Full domain name),你不能使用網址的其他部份,也不可用 domain 代表 domain.example,domain.test。
注意:有限制網域的元素隱藏規則也可用來隱藏瀏覽器的使用介面。例如: 「browser#menuitem(javascriptConsole)」會隱藏 Firefox 工具選單內的 JavaScript Console 選項。