LEFT | RIGHT |
1 title=Writing Adblock Plus filters | 1 title=Writing Adblock Plus filters |
2 | 2 |
3 | 3 |
4 <p>{{s1 Current Adblock Plus versions allow you to "tweak" your filters in many
different ways. This document explains the choices that you have and how they ca
n be used.}}</p> | 4 <p>{{s1 Current Adblock Plus versions allow you to "tweak" your filters in many
different ways. This document explains the choices that you have and how they ca
n be used.}}</p> |
5 | 5 |
6 <p>{{s2 <em>Disclaimer</em>: All filter examples given here are really only ex
amples and are not meant to be used.}}</p> | 6 <p>{{s2 <em>Disclaimer</em>: All filter examples given here are really only ex
amples and are not meant to be used.}}</p> |
7 | 7 |
8 <h2 id="introduction">{{s3 Introduction to Adblock Plus filters}}</h2> | 8 <h2 id="introduction">{{s3 Introduction to Adblock Plus filters}}</h2> |
9 | 9 |
10 <p>{{s4 The options described in this section should be enough for users who h
ave to create a filter occasionally.}}</p> | 10 <p>{{s4 The options described in this section should be enough for users who h
ave to create a filter occasionally.}}</p> |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
226 <h3 id="elemhide_attributes">{{s93 Attribute selectors}}</h3> | 226 <h3 id="elemhide_attributes">{{s93 Attribute selectors}}</h3> |
227 | 227 |
228 <p>{{s94 Some advertisers don't make it easy for you — their text advertisemen
ts have neither an id nor a class attribute. You can use other attributes to hid
e those, for example <code><fix>##table[width="80%"]</fix></code> will hide tabl
es with width attribute set to 80%. If you don't want to specify the full value
of the attribute, <code><fix>##div[title*="adv"]</fix></code> will hide all div
elements with title attribute containing the string "adv". You can also check th
e beginning and the end of an attribute, for example <code><fix>##div[title^="ad
v"][title$="ert"]</fix></code> will hide div elements with title starting with "
adv" and ending with "ert". As you see, you can also use multiple conditions — <
code><fix>table[width="80%"][bgcolor="white"]</fix></code> will match tables wit
h width attribute set to 80% and bgcolor attribute set to white.}}</p> | 228 <p>{{s94 Some advertisers don't make it easy for you — their text advertisemen
ts have neither an id nor a class attribute. You can use other attributes to hid
e those, for example <code><fix>##table[width="80%"]</fix></code> will hide tabl
es with width attribute set to 80%. If you don't want to specify the full value
of the attribute, <code><fix>##div[title*="adv"]</fix></code> will hide all div
elements with title attribute containing the string "adv". You can also check th
e beginning and the end of an attribute, for example <code><fix>##div[title^="ad
v"][title$="ert"]</fix></code> will hide div elements with title starting with "
adv" and ending with "ert". As you see, you can also use multiple conditions — <
code><fix>table[width="80%"][bgcolor="white"]</fix></code> will match tables wit
h width attribute set to 80% and bgcolor attribute set to white.}}</p> |
229 | 229 |
230 <h3 id="elemhide_css">{{s95 Advanced selectors}}</h3> | 230 <h3 id="elemhide_css">{{s95 Advanced selectors}}</h3> |
231 | 231 |
232 <p>{{s97 In general, any CSS selector supported by Firefox can be used for ele
ment hiding. For example the following rule will hide anything following a div e
lement with class "adheader": <code><fix>##div.adheader + *</fix></code>. For a
full list of CSS list see <a href="{{s97-link http://www.w3.org/TR/css3-selector
s/}}">W3C CSS specification</a> (note that not all selectors are supported by Fi
refox yet).}}</p> | 232 <p>{{s97 In general, any CSS selector supported by Firefox can be used for ele
ment hiding. For example the following rule will hide anything following a div e
lement with class "adheader": <code><fix>##div.adheader + *</fix></code>. For a
full list of CSS list see <a href="{{s97-link http://www.w3.org/TR/css3-selector
s/}}">W3C CSS specification</a> (note that not all selectors are supported by Fi
refox yet).}}</p> |
233 | 233 |
234 <p>{{s98 <em>Note</em>: This functionality is for advanced users only, you sho
uld be comfortable with CSS selectors to use it. Adblock Plus won't be able to c
heck the syntax of the selector you are adding, if you use invalid CSS syntax yo
u might break other (valid) rules you have. Check JavaScript Console for CSS err
ors.}}</p> | 234 <p>{{s98 <em>Note</em>: This functionality is for advanced users only, you sho
uld be comfortable with CSS selectors to use it. Adblock Plus won't be able to c
heck the syntax of the selector you are adding, if you use invalid CSS syntax yo
u might break other (valid) rules you have. Check JavaScript Console for CSS err
ors.}}</p> |
235 | 235 |
236 <h3 id="elemhide-emulation">{{ elemhide-emulation-heading Extended CSS selectors
(Adblock Plus specific) }}</h3> | 236 <h3 id="elemhide-emulation">{{ elemhide-emulation-heading[heading] Extended CSS
selectors (Adblock Plus specific) }}</h3> |
237 | 237 |
238 <p> | 238 <p> |
239 {{ elemhide-emulation-1 Sometimes the standard CSS selectors aren't powerful e
nough to hide an advertisement, for those cases we have added some new ones, nam
ely <code><fix>:-abp-has()</fix></code> and <code><fix>:-abp-properties()</fix><
/code> (requires Adblock Plus 1.13.3 for Chrome and Opera or higher). }} | 239 {{ elemhide-emulation-1 Sometimes the standard CSS selectors aren't powerful e
nough to hide an advertisement, for those cases we have added some new ones, nam
ely <code><fix>:-abp-has()</fix></code> and <code><fix>:-abp-properties()</fix><
/code> (requires Adblock Plus 1.13.3 for Chrome and Opera or higher). }} |
240 </p> | 240 </p> |
241 <p> | 241 <p> |
242 {{ elemhide-emulation-2 When writing an element hiding filter that makes use o
f these extended selectors you must use the <code><fix>#?#</fix></code> syntax,
e.g. <code><fix>example.com#?#selector</fix></code>. But it's important to note
that doing so carries a performance impact, so do so sparingly and make sure tho
se filters are specific to as few domains and elements as possible. }} | 242 {{ elemhide-emulation-2 When writing an element hiding filter that makes use o
f these extended selectors you must use the <code><fix>#?#</fix></code> syntax,
e.g. <code><fix>example.com#?#selector</fix></code>. But it's important to note
that doing so carries a performance impact, so do so sparingly and make sure tho
se filters are specific to as few domains and elements as possible. }} |
243 </p> | 243 </p> |
244 <h4>abp-properties-heading :-abp-properties()</h4> | 244 <h4>:-abp-properties()</h4> |
245 <p> | 245 <p> |
246 {{ abp-properties-1 <code><fix>:-abp-properties(properties)</fix></code> will
select elements based upon stylesheet properties. For example <code><fix>:-abp-p
roperties(width:300px;height:250px;)</fix></code> will select elements that have
a corresponding CSS rule in a stylesheet which sets the <code><fix>width</fix><
/code> and <code><fix>height</fix></code> to the values <code><fix>300px</fix></
code> and <code><fix>250px</fix></code> respectively. Property names are matched
case-insensitively. Furthermore, wildcards can be used so that <code><fix>:-abp
-properties(width:*px;height:250px;)</fix></code> will match any width specified
in pixels and a height of 250 pixels. }} | 246 {{ abp-properties-1 <code><fix>:-abp-properties(properties)</fix></code> will
select elements based upon stylesheet properties. For example <code><fix>:-abp-p
roperties(width:300px;height:250px;)</fix></code> will select elements that have
a corresponding CSS rule in a stylesheet which sets the <code><fix>width</fix><
/code> and <code><fix>height</fix></code> to the values <code><fix>300px</fix></
code> and <code><fix>250px</fix></code> respectively. Property names are matched
case-insensitively. Furthermore, wildcards can be used so that <code><fix>:-abp
-properties(width:*px;height:250px;)</fix></code> will match any width specified
in pixels and a height of 250 pixels. }} |
247 </p> | 247 </p> |
248 <p> | 248 <p> |
249 {{ abp-properties-2 You can also use <a href="https://developer.mozilla.org/en
-US/docs/Web/JavaScript/Guide/Regular_Expressions">regular expressions</a> by su
rrounding the properties expression with "/". For example, <code><fix>:-abp-prop
erties(/width:30[2-8]px;height:250px;/)</fix></code> will match widths between 3
02 and 308 pixels and a height of 250 pixels. }} | 249 {{ abp-properties-2 You can also use <a href="https://developer.mozilla.org/en
-US/docs/Web/JavaScript/Guide/Regular_Expressions">regular expressions</a> by su
rrounding the properties expression with "/". For example, <code><fix>:-abp-prop
erties(/width:30[2-8]px;height:250px;/)</fix></code> will match widths between 3
02 and 308 pixels and a height of 250 pixels. }} |
250 </p> | 250 </p> |
251 <p> | 251 <p> |
252 {{ abp-properties-3 <em>Note</em>: The <a href="https://adblockplus.org/develo
pment-builds/new-css-property-filter-syntax">older syntax</a> for the CSS proper
ty filters is deprecated and will be automatically converted to the new format&n
bsp;. The syntax to select the style properties remain the same. For example, <c
ode><fix>[-abp-properties='width:300px;height:250px;']</fix></code> will be conv
erted to <code><fix>:-abp-properties(width:300px;height:250px;)</fix></code>. }} | 252 {{ abp-properties-3 <em>Note</em>: The <a href="https://adblockplus.org/develo
pment-builds/new-css-property-filter-syntax">older syntax</a> for the CSS proper
ty filters is deprecated and will be automatically converted to the new format&n
bsp;. The syntax to select the style properties remain the same. For example, <c
ode><fix>[-abp-properties='width:300px;height:250px;']</fix></code> will be conv
erted to <code><fix>:-abp-properties(width:300px;height:250px;)</fix></code>. }} |
253 </p> | 253 </p> |
254 <h4>abp-has-title :-abp-has()</h4> | 254 <h4>:-abp-has()</h4> |
255 <p> | 255 <p> |
256 {{ abp-has-1 <code><fix>:-abp-has(selector)</fix></code> will select elements
based on their content. For example <code><fix>:-abp-has(> div > a.advertiser)</
fix></code> will select elements that contain as a direct descendant a <code><fi
x><div></fix></code> that contains an <code><fix><a></fix></code> wi
th the class <code><fix>advertiser</fix></code>. The inner selector can be relat
ive to the element scope, and can use any of the pseudo-selectors, including <co
de><fix>:-abp-has()</fix></code> and will determine whether the selection will o
ccur. }} | 256 {{ abp-has-1 <code><fix>:-abp-has(selector)</fix></code> will select elements
based on their content. For example <code><fix>:-abp-has(> div > a.advertiser)</
fix></code> will select elements that contain as a direct descendant a <code><fi
x><div></fix></code> that contains an <code><fix><a></fix></code> wi
th the class <code><fix>advertiser</fix></code>. The inner selector can be relat
ive to the element scope, and can use any of the pseudo-selectors, including <co
de><fix>:-abp-has()</fix></code> and will determine whether the selection will o
ccur. }} |
257 </p> | 257 </p> |
258 | 258 |
259 <h3 id="elemhide_exceptions">{{s99 Exception rules}}</h3> | 259 <h3 id="elemhide_exceptions">{{s99 Exception rules}}</h3> |
260 | 260 |
261 <p> | 261 <p> |
262 {{s100 Exception rules can disable existing rules on particular domains.}} {{s
101 These are mostly | 262 {{s100 Exception rules can disable existing rules on particular domains.}} {{s
101 These are mostly |
263 useful to filter subscription authors who are extending another filter subscri
ption that they | 263 useful to filter subscription authors who are extending another filter subscri
ption that they |
264 cannot change.}} {{s102 For example, the rule <code><fix>##div.textad</fix></c
ode> can be | 264 cannot change.}} {{s102 For example, the rule <code><fix>##div.textad</fix></c
ode> can be |
(...skipping 30 matching lines...) Expand all Loading... |
295 {{s110 The data used for creating the signature is a concatenated list of requ
est variables (namely URI, host and user agent) separated by the <code><fix>NUL<
/fix></code> character "\0". For example:}} | 295 {{s110 The data used for creating the signature is a concatenated list of requ
est variables (namely URI, host and user agent) separated by the <code><fix>NUL<
/fix></code> character "\0". For example:}} |
296 </p> | 296 </p> |
297 | 297 |
298 <pre> | 298 <pre> |
299 /index.html?q=foo\0www.example.com\0Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv
:30.0) Gecko/20100101 Firefox/30.0 | 299 /index.html?q=foo\0www.example.com\0Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv
:30.0) Gecko/20100101 Firefox/30.0 |
300 </pre> | 300 </pre> |
301 | 301 |
302 <p> | 302 <p> |
303 {{s111 Finally, generate the signature for this string by using the signature
algorithm SEC_OID_ISO_SHA_WITH_RSA_SIGNATURE (default when using OpenSSL).}} | 303 {{s111 Finally, generate the signature for this string by using the signature
algorithm SEC_OID_ISO_SHA_WITH_RSA_SIGNATURE (default when using OpenSSL).}} |
304 </p> | 304 </p> |
LEFT | RIGHT |