2005-12-11

以無擴充套件的Firefox擋廣告

一般人想在Firefox擋廣告大多會使用Adblock這類擴充套件,但這類擴充套件往往會影響Firefox的效能。

所以有些人寧願使用Firefox內置的「拒絕圖片」功能,都不裝相關的擴充套件。

不過這功能頗為極端,一擋就是擋下整個網址的圖片。而且這只對圖片有效,對於Flash只能默默忍受,雖然可以選擇移除Flash player,但這會做成很多不便。

Firefox 1.5可以針對特定網站設立CSS,而我們就是要把這功能應用到擋廣告之上。所以建議在開始之前,先看一看針對特定網站設立樣式稍為了解一下。

以下範例的作用是擋掉網址以http://www.macromedia.com/開頭的所有Flash
@-moz-document url-prefix(http://www.macromedia.com/) {
object {
display:none !important;
}
}
雖然object不只是用來貼Flash,但它現在確實像Flash專用般,加上現在是針對特定網站去擋,所以誤擋率其實很低。

加上!important是為了避免語法受網站本身的CSS影響而失效。

在尋找網頁上的廣告部份時,可先反白廣告的位置,然後右鍵,選擇「檢視選取範圍原始碼」,這能省掉很多時間。

還有一點值得注意,我們不需要考慮這些CSS是否相容其他瀏覽器,因為這只會在Firefox上使用。因此,我們可以使用很多不同的選擇符(Selectors),例如IE不支援的[attr="value"]

應用例子A:
擋下闊度為760的圖片
img[width="760"] {
display:none !important;
}
應用例子B:
擋下Google生成的iframe廣告
iframe[name="google_ads_frame"] {
display:none !important;
}
由於這種做法只會對特定的網站有效,所以誤擋率較低。不過也有誤擋率較高的做法,就是去掉@-moz-document url-prefix(URL) {}的部份,直接寫上CSS,這將會在所有網站生效。

個人認為,Flash player應允許使用者拒絕特定網站的Flash,但相信是出於商業考量,而沒有此功能。

相關連結:
針對特定網站設立樣式
合標準的CSS教學
Mozilla Taiwan討論區上的討論串
Mozilla: Ad Blocking

起題於:12/10/2005

沒有留言:

發佈留言

沒帳戶請選擇「Name/URL」或「Anonymous」,不需為留言而註冊