关于 Adblock Plus for firefox(以下简称 ABP)的一些笔记。

安装好 ABP,将如下代码保存为 html 文件,然后在 firefox 中打开:

<p id="ad-banner">Hello World</p>

页面空白,原因是 ABP 将该 DOM 元素识别为了广告元素(谁叫你 id 带上 ad 呢)。查看该元素的样式:

#ad-banner {
    -moz-binding: url("about:abp-elemhidehit?700943922222#dummy") !important;
}

这段样式定义在 elemhide.css 文中,而该 css 文件保存在本地,我本地路径如下:

C:/Users/my_user_name/AppData/Roaming/Mozilla/Firefox/Profiles/0zwen4j6.default/adblockplus/elemhide.css

ABP 工作原理似乎有些眉目了。页面载入后(一般是 dom ready 后),ABP 工作,载入 elemhide.css 这个样式文件,而该样式文件则定义了一些过滤地址,随便找一段:

@-moz-document domain("www.sina.com.cn"){
#SI_EDU_AD{-moz-binding: url(about:abp-elemhidehit?586665725907#dummy) !important;}
.mod-01{-moz-binding: url(about:abp-elemhidehit?687687809199#dummy) !important;}
.part-k-l > .mod-13{-moz-binding: url(about:abp-elemhidehit?340624987696#dummy) !important;}
.part-l{-moz-binding: url(about:abp-elemhidehit?633256127575#dummy) !important;}
}

这段代码的意思就是过滤 www.sina.com.cn 域名下的 id 为 SI_EDU_AD 的元素,class 为 mod-01 的元素,等等。elemhide.css 文件非常庞大,而 ABP 的过滤源有专人(志愿者)维护(比如 chinalist+easylist)。

为何加上这个样式,dom 元素就不可见了呢?(以下开始为个人理解)原因是 -moz-binding 属性将 DOM "私有化" 成一个 widgets(类似于 Web Components? Flash?),跟 chrome 下的 Shadow Dom 类似,url 内为一个 XML 文件,属于 XML Binding Language(XBL),关于 XBL 更多可以参考文末链接。神奇的是,-moz-binding 属性似乎是 "可持久化" 的,以最开始的代码为例,当 ABP 作用后 id 为 ad-banner 的元素被成功屏蔽,f12 后用 firebug 将 id 修改掉,元素依然不显示,由此可见其 "可持久化" 的性质。同时对于新插入的元素,该段 css 同样生效。(比如规则是屏蔽某个 id 下的第一个子元素,如果插入一个新的子元素在第一个位置,那么先后两个子元素均被屏蔽)

Read More:

Adblock Plus for firefox的更多相关文章

  1. 【Chrome】手动下载和安装Adblock Plus的方法

    由于强大的GFW,导致很多Google的站点没法访问,也就没法直接安装chrome的插件了,网页都打不卡, 那么几乎是必备的Adblock Plus如何下载安装呢? 1.访问官方网站: https:/ ...

  2. firefox火狐浏览器过滤广告插件:Adblock Plus

    firefox火狐浏览器过滤广告插件:Adblock Plus

  3. Firefox火狐广告过滤插件Adblock Plus过滤规则包[中文维护小组]

    如果你经常使用Firefox火狐浏览器那么一定知道Adblock Plus这款广告过滤插件,功能非常强大,但是Adblock Plus广告过滤插件自带的过滤规则并不多,而且也不太适合我们中国的网站,在 ...

  4. firefox屏蔽广告真是太好了

    在ubuntu上使用firefox有些页面的广告很多,很讨厌. 突然想到是否可以把这些广告屏蔽掉.在网上搜索了一下,发现有个 adblock plus插件,安装上发现广告没有了,很干净. 开源软件就是 ...

  5. firefox, chrome常见插件

    firefox: firebug flagfox adblock autoproxy foxyproxy firegestures httpfox httprequester colorzilla j ...

  6. 浏览器 - Firefox开发者附加组件

    Firefox开发者版本下载地址: https://www.mozilla.org/zh-CN/firefox/channel/desktop/#developer 教程: https://devel ...

  7. firefox广告拦截插件

    firefox广告拦截插件: Adblock Plus  Adblock Edge Adblock Plus Pop-up Addon 如果不能更新,则需要修改HOST: 117.18.232.191 ...

  8. Firefox上Web开发工具库一览

    Firefox的目标之一就是尽可能地使web开发者的生活更简单高效,并通过提供工具和具有很强扩展性的浏览器使人们创造出神奇的东西.使web开发者使用Firefox的时候,浏览器可以提供大量开发工具和选 ...

  9. 详尽介绍FireFox about:config

    一.什么是about:config about: config: 是Firefox的设置页面,Firefox提供了不少高级设置选项在这里以便让你可以更加详细地控制Firefox的运行方式.官方不推荐 ...

随机推荐

  1. Linux下python安装升级详细步骤 | Python2 升级 Python3

    Linux下python升级步骤  Python2 ->Python3 多数情况下,系统自动的Python版本是2.x 或者yum直接安装的也是2.x 但是,现在多数情况下建议使用3.x 那么如 ...

  2. HTML基础(四)——设置超链接的样式示例

     ***设置超链接的样式示例  a:link 超链接被点前状态 a:visited 超链接点击后状态 a:hover 悬停在超链接时 a:active 点击超链接时 在定义这些状态时,有一个顺序l v ...

  3. Druid 数据库连接池监控配置(web项目)

    Spring数据源配置: <!-- 数据源 --> <!--<bean id="dataSource" class="org.apache.com ...

  4. 好久没有写博客了,发现Live Writer也更新了

    最近由于工作变动,工作内容和心态也有所变化,所以很久没有写博客了,而且我的开源项目深蓝词库转换也很近没有更新了.今天打开LiveWriter发现居然有新版本,于是果断更新.现在新的LiveWriter ...

  5. JBOSS目录结构详细说明

    一.下载与安装. 如何下载以及安装配置,请参考:Windows下JBOSS安装配置图文教程 二.现在主要了解一下JBOSS目录结构. 1. 主目录: E:\jboos\jboss-6.1.0.Fina ...

  6. 烂泥:nagios学习(四):pnp4nagios图形化绘制nagios数据

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 在nagios安装完毕后,我们也添加了一些监控对象,但是你会发现nagios只是简单的给我们列出那些监控对象是正常的,而没有把这些监控对象的数据进行整合. ...

  7. x01.os.7: 傻子一样的等

    傻子一样的等 昨日出差,办完事后,下午 2:30,准备进长途汽车站买票回家,被一人拦住,说可以带我进去,车马上就要开了,买票来不及.我以为是汽车司机,就跟了进去.进去后,他打了个电话,说 3:30 车 ...

  8. adroid 目录

    安桌程式安装后存在目录:\手机存储\Android\data 一: //  获取当前程序路径 getApplicationContext().getFilesDir().getAbsolutePath ...

  9. HashMap和HashSet

    Java使用Set接口来描述集合,而Set中每一个数据元素都是唯一的. HashSet散列集合 Hash算法:把任意长度输入,通过散列算法,变换成固定长度的输出即散列值.对不同类型信息,散列值公式也是 ...

  10. 编写NPAPI plugin的命名问题

    最近写了个NPAPI的插件,在chrome上用得好好的,结果在火狐上死活不认我的插件,找了N多资料最后在官方的说明里才找到说火狐浏览器的插件的文件名必须是以np开头的,立刻吐血三升,难怪被chrome ...