| 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 229 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  240   useful to filter subscription authors who are extending another filter subscri
     ption that they |  240   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 |  241   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 |  242   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 |  243   <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 |  244   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 |  245   <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 |  246   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.}} |  247   other cases limiting this rule to the necessary domains is preferable.}} | 
|  248 </p> |  248 </p> | 
|  249  |  249  | 
 |  250 <h3 id="elemhide_emulation">{{s112 Advanced element hiding}}</h3> | 
 |  251  | 
 |  252 <p> | 
 |  253   {{s113 Advanced hiding rules will hide elements that matches the CSS selector 
     directly.}} | 
 |  254   {{s114 <code><fix>example.com#?#div.textad</fix></code> will directly hide <co
     de><fix><div></fix></code> elements with the <code><fix>textad</fix></code
     > class.}} | 
 |  255   {{s115 These filters only exist as specific filters: a domain is mandatory.}} | 
 |  256 </p> | 
 |  257 <p> | 
 |  258   {{s116 Exception rules above can be applied to the advanced hiding rules the s
     ame way.}} | 
 |  259 </p> | 
 |  260 <p> | 
 |  261   {{s117 Advanced hiding rules also introduce new pseudo-class selectors for whe
     n a plain CSS selector isn't enough.}} {{s117 <code><fix>:-abp-has(selector)</fi
     x></code> will select the element whose content match the enclosed selector.}} {
     {s118 <code><fix>:-abp-properties(properties)</fix></code> will match elements b
     ased on their CSS style properties.}} | 
 |  262 </p> | 
 |  263 <p> | 
 |  264   {{s118 <code><fix>:-abp-properties(properties)</fix></code> will select elemen
     ts based on properties of their stylesheet.}} | 
 |  265   {{s119 For example, <code><fix>:-abp-properties(width:300px;height:250px;)</fi
     x></code> will select elements that have <code><fix>width</fix></code> and <code
     ><fix>height</fix></code> set to the specified values <code><fix>300px</fix></co
     de> and <code><fix>250px</fix></code> respectively.}} | 
 |  266   {{s120 The <a href="https://adblockplus.org/development-builds/new-css-propert
     y-filter-syntax">older syntax</a> for the filters is deprecated and will be auto
     matically converted to the new format ; the syntax to select the style prop
     erties remain the same.}} | 
 |  267 </p> | 
 |  268 <p> | 
 |  269   {{s121 <code><fix>:-abp-has(selector)</fix></code> will select elements based 
     on their content.}} | 
 |  270   {{s122 For example, <code><fix>:-abp-has(> div > a.advertiser)</fix></code> wi
     ll select elements that contain as a direct descendant a <code><fix><div><
     /fix></code> that contains an <code><fix><a></fix></code> with the class <
     code><fix>advertiser</fix></code>. The inner selector matching determine whether
      the selection occur. It is important that <code><fix>:-abp-has()</fix></code> b
     e applied to a restricted number of elements to avoid performance issues. Like a
     ny regular pseudo-class you can combine it with the CSS selector syntax.}} | 
 |  271 </p> | 
 |  272  | 
|  250   <h3 id="elemhide_simplified">{{s105 Simplified element hiding syntax}}</h3> |  273   <h3 id="elemhide_simplified">{{s105 Simplified element hiding syntax}}</h3> | 
|  251  |  274  | 
|  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> |  275   <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  |  276  | 
|  254   <h3 id="generic-specific">{{generic-specific-title Generic / Specific filters}
     }</h3> |  277   <h3 id="generic-specific">{{generic-specific-title Generic / Specific filters}
     }</h3> | 
|  255  |  278  | 
|  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> |  279   <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> |  280   <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> | 
|  258   <p>{{generic-specific-explanation-p3 Note that with blocking rules the domain 
     must be specified under the $domain option for them to be considered specific. F
     or example, <code><fix>||example.com^</fix></code> is considered generic whereas
      <code><fix>*/ads/*$domain=example.com</fix></code> is site-specific.}}</p> |  281   <p>{{generic-specific-explanation-p3 Note that with blocking rules the domain 
     must be specified under the $domain option for them to be considered specific. F
     or example, <code><fix>||example.com^</fix></code> is considered generic whereas
      <code><fix>*/ads/*$domain=example.com</fix></code> is site-specific.}}</p> | 
|  259  |  282  | 
| (...skipping 11 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:}} |  294   {{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> |  295 </p> | 
|  273  |  296  | 
|  274 <pre> |  297 <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 |  298   /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> |  299 </pre> | 
|  277  |  300  | 
|  278 <p> |  301 <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).}} |  302   {{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> |  303 </p> | 
| OLD | NEW |