<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>静养心智-动抒豪情™ - 王聪明的日志 &#187; adblock</title>
	<atom:link href="http://wangcongming.info/tag/adblock/feed/" rel="self" type="application/rss+xml" />
	<link>http://wangcongming.info</link>
	<description>灵 动 生 活　　点 滴 感 悟</description>
	<lastBuildDate>Sun, 19 Feb 2012 18:04:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>adblock隐藏规则中的CSS选择器</title>
		<link>http://wangcongming.info/2007/06/adblock%e9%9a%90%e8%97%8f%e8%a7%84%e5%88%99%e4%b8%ad%e7%9a%84css%e9%80%89%e6%8b%a9%e5%99%a8/</link>
		<comments>http://wangcongming.info/2007/06/adblock%e9%9a%90%e8%97%8f%e8%a7%84%e5%88%99%e4%b8%ad%e7%9a%84css%e9%80%89%e6%8b%a9%e5%99%a8/#comments</comments>
		<pubDate>Sat, 30 Jun 2007 04:08:00 +0000</pubDate>
		<dc:creator>Wang Congming</dc:creator>
				<category><![CDATA[Geek Tweak]]></category>
		<category><![CDATA[adblock]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[广告]]></category>

		<guid isPermaLink="false">http://wangcongming.info/2007/06/30/adblock%e9%9a%90%e8%97%8f%e8%a7%84%e5%88%99%e4%b8%ad%e7%9a%84css%e9%80%89%e6%8b%a9%e5%99%a8/</guid>
		<description><![CDATA[adblock（官网、安装）是我觉得最不可或缺的几个Firefox 插件之一，除了过滤用于广告的帧、脚本、图片、flash等，加快浏览速度之外，元素隐藏则可以隐藏那些恶心的文本广告，清新整洁的互联网使人心情愉悦：），想到一句广告词：痘痘都不见了！ 然而，这次却遇到一个极想隐藏又没办法隐藏的广告。因为人家只有一个table，总不至于把所有table都隐藏了吧=_=! 我只好再次打开adblock官网，找到过滤规则写法说明，看看会不会有什么新发现。虽然早就看过，但只是草草概览了一遍，这回认真一看，果然以前漏掉了一个极重要的特性：adblock支持 CSS selector 。 也就是说，就好像自己就是这个网站的作者，像平常写style sheet一样选择元素，最后由adblock自动在后面加上{ display: none; }。比如： Click the expand button to read full text&#8230; * //匹配所有元素 A //匹配所有名为A的元素 A B //匹配名为B且包含在A中的元素（B是A的“后代”，包括儿子、孙子……） A&#62;B /* 匹配名为B且是A的孩子的元素： &#60;div&#62;Hello&#60;h1&#62;adblock, &#60;em&#62;I love you!&#60;/em&#62;&#60;/h1&#62;&#60;/div&#62; 其中，h1是div的孩子，em是div的孙子…… div&#62;h1：匹配 div&#62;em：不匹配 div em：匹配 */ A:first-child /* 匹配名为A且是其父母长子的元素 &#60;h1&#62;&#60;strong&#62;Hello&#60;/strong&#62;&#60;em&#62;adblock!&#60;/em&#62;&#60;/h1&#62; 其中，strong是长子，em不是 strong:first-child：匹配 em:first-child：不匹配 */ A + B /* 匹配名为B且是A紧挨着的弟弟的元素 &#60;nl&#62; &#60;lable&#62;for [...]]]></description>
			<content:encoded><![CDATA[<p>adblock（<a href="http://adblockplus.org/en/">官网</a>、<a href="https://addons.mozilla.org/en-US/firefox/addon/1865">安装</a>）是我觉得最不可或缺的几个<a href="http://www.mozilla.org.cn/">Firefox</a> <a href="https://addons.mozilla.org/en-US/firefox/">插件</a>之一，除了过滤用于广告的帧、脚本、图片、flash等，加快浏览速度之外，元素隐藏则可以隐藏那些恶心的文本广告，清新整洁的互联网使人心情愉悦：），想到一句广告词：痘痘都不见了！</p>
<p>然而，这次却遇到一个极想隐藏又没办法隐藏的广告。因为人家只有一个table，总不至于把所有table都隐藏了吧=_=!</p>
<p>我只好再次打开adblock官网，找到<a href="http://adblockplus.org/en/filters">过滤规则写法说明</a>，看看会不会有什么新发现。虽然早就看过，但只是草草概览了一遍，这回认真一看，果然以前漏掉了一个极重要的特性：adblock支持 <a href="http://www.w3.org/TR/REC-CSS2/selector.html">CSS selector</a> 。</p>
<p>也就是说，就好像自己就是这个网站的作者，像平常写style sheet一样选择元素，最后由adblock自动在后面加上{ display: none; }。比如：</p>
<p><span class="note_text">Click the expand button to read full text&#8230;</span><span class="long_text"><span class="code"><br />
*<br />
//匹配所有元素</span></span></p>
<p>A<br />
//匹配所有名为A的元素</p>
<p>A B<br />
//匹配名为B且包含在A中的元素（B是A的“后代”，包括儿子、孙子……）</p>
<p>A&gt;B<br />
/*  匹配名为B且是A的孩子的元素：<br />
&lt;div&gt;Hello&lt;h1&gt;adblock, &lt;em&gt;I love you!&lt;/em&gt;&lt;/h1&gt;&lt;/div&gt;<br />
其中，h1是div的孩子，em是div的孙子……<br />
div&gt;h1：匹配<br />
div&gt;em：不匹配<br />
div em：匹配  */</p>
<p>A:first-child<br />
/*  匹配名为A且是其父母长子的元素<br />
&lt;h1&gt;&lt;strong&gt;Hello&lt;/strong&gt;&lt;em&gt;adblock!&lt;/em&gt;&lt;/h1&gt;<br />
其中，strong是长子，em不是<br />
strong:first-child：匹配<br />
em:first-child：不匹配  */</p>
<p>A + B<br />
/*  匹配名为B且是A<em>紧挨着的</em>弟弟的元素<br />
&lt;nl&gt;<br />
&lt;lable&gt;for many reasons:&lt;/lable&gt;<br />
&lt;li&gt;1&lt;/li&gt;<br />
&lt;li&gt;2&lt;/li&gt;<br />
&lt;li&gt;&#8230;&lt;/li&gt;<br />
&lt;/nl&gt;<br />
&lt;h1&gt;I love adblock&lt;/h1&gt;<br />
&lt;p&gt;and, I can&#8217;t help introducing it to you&lt;/p&gt;<br />
nl + h1：匹配<br />
h1 + p：匹配<br />
nl + p：不匹配  */</p>
<p>A[B]<br />
//  名为A且具有属性B的元素</p>
<p>A[B="C"]<br />
//  名为A且属性B<em>精确地</em>等于C的元素</p>
<p>A[B~="C"]<br />
/*  名为A且其属性B以空格分隔的多个值中的一个等于C的元素<br />
&lt;div class=”adv blink right_box”&gt;example&lt;/div&gt;<br />
div[class]：匹配<br />
div[class="adv blink right_box"]：匹配<br />
div[class~="blink"]：匹配<br />
div[class="blink"]：不匹配<br />
div.adv：匹配  */</p>
<p>A.B<br />
//等价于 A[class~="B"]</p>
<p>A#B<br />
//等价于 A[id="B"]</p>
<p>虽然看起来也不是很多，但将上面几种模式组合起来用，效果是很强大的。在实际的例子中，应该不会有隐藏不了的吧：）</p>
]]></content:encoded>
			<wfw:commentRss>http://wangcongming.info/2007/06/adblock%e9%9a%90%e8%97%8f%e8%a7%84%e5%88%99%e4%b8%ad%e7%9a%84css%e9%80%89%e6%8b%a9%e5%99%a8/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

