Left: | ||
Right: |
OLD | NEW |
---|---|
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-title Advanced pseudo-selectors }}</h3> | |
237 | |
238 <p> | |
239 {{elemhide-emulation-explanation-p1 Advanced pseudo-selector rules will hide e lements that match the CSS selector directly. <code><fix>example.com#?#selector< /fix></code> will directly hide elements matching the selector. These filters on ly exist as <a href="#generic-specific">specific filters</a>, a domain is mandat ory.}} | |
kzar
2017/07/12 10:39:21
The part about domain being mandatory belongs with
kzar
2017/07/12 10:39:21
I think we need to start off by explaining what th
kzar
2017/07/12 10:39:22
I still don't understand what you mean by "Advance
hub
2017/07/12 22:12:49
removed it.
hub
2017/07/12 22:12:49
Acknowledged.
hub
2017/07/12 22:12:49
Acknowledged.
| |
240 </p> | |
241 <p> | |
242 {{elemhide-emulation-explanation-p2 Advanced pseudo-selector rules define new pseudo-class selectors for when a plain CSS selector isn't enough: <code><fix>:- abp-has()</fix></code> and <code><fix>:-abp-properties()</fix></code>. In order to minimise the performance impact, it is important to restrict with a proper CS S selector the number of elements these pseudo-selectors apply to.}} | |
243 </p> | |
244 <p> | |
245 {{elemhide-emulation-explanation-p3 <code><fix>:-abp-properties(properties)</f ix></code> will select elements based on properties of their stylesheet. For exa mple <code><fix>:-abp-properties(width:300px;height:250px;)</fix></code> will se lect elements that have <code><fix>width</fix></code> and <code><fix>height</fix ></code> set to the specified values <code><fix>300px</fix></code> and <code><fi x>250px</fix></code> respectively.}} | |
kzar
2017/07/12 10:39:22
Could you add a sub-heading for this and :has?
hub
2017/07/12 22:12:49
Done.
| |
246 </p> | |
247 <p> | |
248 {{elemhide-emulation-explanation-p4 The <a href="https://adblockplus.org/devel opment-builds/new-css-property-filter-syntax">older syntax</a> for the CSS prope rty filters is deprecated and will be automatically converted to the new format& nbsp;. The syntax to select the style properties remain the same. <code><fix>[-a bp-properties='width:300px;height:250px;']</fix></code> will be converted to <co de><fix>:-abp-properties(width:300px;height:250px;)</fix></code>.}} | |
kzar
2017/07/12 10:39:21
Could you prefix this paragraph with "Note:" and i
kzar
2017/07/12 10:39:22
Could you add "For example" before the example?
hub
2017/07/12 22:12:49
Acknowledged.
| |
249 </p> | |
250 <p> | |
251 {{elemhide-emulation-explanation-p5 <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><fix><div></fix></code> that contains an <code><fix>&l t;a></fix></code> with the class <code><fix>advertiser</fix></code>. The inne r selector can be relative to the element scope, and can use any of the pseudo-s electors, including <code><fix>:-abp-has()</fix></code> and will determine wheth er the selection occur.}} | |
252 </p> | |
253 | |
236 <h3 id="elemhide_exceptions">{{s99 Exception rules}}</h3> | 254 <h3 id="elemhide_exceptions">{{s99 Exception rules}}</h3> |
237 | 255 |
238 <p> | 256 <p> |
239 {{s100 Exception rules can disable existing rules on particular domains.}} {{s 101 These are mostly | 257 {{s100 Exception rules can disable existing rules on particular domains.}} {{s 101 These are mostly |
240 useful to filter subscription authors who are extending another filter subscri ption that they | 258 useful to filter subscription authors who are extending another filter subscri ption that they |
241 cannot change.}} {{s102 For example, the rule <code><fix>##div.textad</fix></c ode> can be | 259 cannot change.}} {{s102 For example, the rule <code><fix>##div.textad</fix></c ode> can be |
242 disabled on <code><fix>example.com</fix></code> using the exception rule | 260 disabled on <code><fix>example.com</fix></code> using the exception rule |
243 <code><fix>example.com#@#div.textad</fix></code>.}} {{s103 The combination of these two | 261 <code><fix>example.com#@#div.textad</fix></code>.}} {{s103 The combination of these two |
244 rules has exactly the same effect as the single rule | 262 rules has exactly the same effect as the single rule |
245 <code><fix>~example.com##div.textad</fix></code>.}} {{s104 It is recommended t hat you use | 263 <code><fix>~example.com##div.textad</fix></code>.}} {{s104 It is recommended t hat you use |
246 exception rules only when you cannot change an overly general element hiding r ule, in all the | 264 exception rules only when you cannot change an overly general element hiding r ule, in all the |
247 other cases limiting this rule to the necessary domains is preferable.}} | 265 other cases limiting this rule to the necessary domains is preferable.}} |
266 {{exception-rules-p6 These exceptions will be applied to <a href="#elemhide-em ulation">advanced pseudo-selector rules</a> as well.}} | |
248 </p> | 267 </p> |
249 | 268 |
250 <h3 id="elemhide_simplified">{{s105 Simplified element hiding syntax}}</h3> | 269 <h3 id="elemhide_simplified">{{s105 Simplified element hiding syntax}}</h3> |
251 | 270 |
252 <p>{{s106 Adblock Plus supports simplified element hiding syntax (e.g. <code>< fix>#div(id=foo)</fix></code>) for backwards compatibility only. Using this synt ax is discouraged, usual CSS selectors are preferred. Support for this syntax mi ght be removed at some point.}}</p> | 271 <p>{{s106 Adblock Plus supports simplified element hiding syntax (e.g. <code>< fix>#div(id=foo)</fix></code>) for backwards compatibility only. Using this synt ax is discouraged, usual CSS selectors are preferred. Support for this syntax mi ght be removed at some point.}}</p> |
253 | 272 |
254 <h3 id="generic-specific">{{generic-specific-title Generic / Specific filters} }</h3> | 273 <h3 id="generic-specific">{{generic-specific-title Generic / Specific filters} }</h3> |
255 | 274 |
256 <p>{{generic-specific-explanation-p1 With the <code><fix>$generichide</fix></c ode> and <code><fix>$genericblock</fix></code> filter options the distinction be tween generic and specific filters becomes important.}}</p> | 275 <p>{{generic-specific-explanation-p1 With the <code><fix>$generichide</fix></c ode> and <code><fix>$genericblock</fix></code> filter options the distinction be tween generic and specific filters becomes important.}}</p> |
257 <p>{{generic-specific-explanation-p2 We classify a filter to be <strong>specif ic</strong> if it matches one or more domains or matches a sitekey. If a filter has no domains specified (or only domain exceptions) and no sitekey then it coun ts as <strong>generic</strong>. For example, <code><fix>example.com##div.textad< /fix></code> is a specific filter, whereas both <code><fix>##div.textad</fix></c ode> and <code><fix>~example.com##div.textad</fix></code> are generic.}}</p> | 276 <p>{{generic-specific-explanation-p2 We classify a filter to be <strong>specif ic</strong> if it matches one or more domains or matches a sitekey. If a filter has no domains specified (or only domain exceptions) and no sitekey then it coun ts as <strong>generic</strong>. For example, <code><fix>example.com##div.textad< /fix></code> is a specific filter, whereas both <code><fix>##div.textad</fix></c ode> and <code><fix>~example.com##div.textad</fix></code> are generic.}}</p> |
(...skipping 13 matching lines...) Expand all Loading... | |
271 {{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:}} | 290 {{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:}} |
272 </p> | 291 </p> |
273 | 292 |
274 <pre> | 293 <pre> |
275 /index.html?q=foo\0www.example.com\0Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv :30.0) Gecko/20100101 Firefox/30.0 | 294 /index.html?q=foo\0www.example.com\0Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv :30.0) Gecko/20100101 Firefox/30.0 |
276 </pre> | 295 </pre> |
277 | 296 |
278 <p> | 297 <p> |
279 {{s111 Finally, generate the signature for this string by using the signature algorithm SEC_OID_ISO_SHA_WITH_RSA_SIGNATURE (default when using OpenSSL).}} | 298 {{s111 Finally, generate the signature for this string by using the signature algorithm SEC_OID_ISO_SHA_WITH_RSA_SIGNATURE (default when using OpenSSL).}} |
280 </p> | 299 </p> |
OLD | NEW |