Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: pages/filters.html

Issue 29482703: Issue 5353 - Add advanced element hiding filters documentation (Closed) Base URL: https://hg.adblockplus.org/web.adblockplus.org/
Patch Set: Updated Created July 13, 2017, 8:17 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« pages/filter-cheatsheet.html ('K') | « pages/filter-cheatsheet.html ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pages/filters.html
===================================================================
--- a/pages/filters.html
+++ b/pages/filters.html
@@ -228,28 +228,52 @@
<p>{{s94 Some advertisers don't make it easy for you — their text advertisements have neither an id nor a class attribute. You can use other attributes to hide those, for example <code><fix>##table[width="80%"]</fix></code> will hide tables 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 the beginning and the end of an attribute, for example <code><fix>##div[title^="adv"][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 with width attribute set to 80% and bgcolor attribute set to white.}}</p>
<h3 id="elemhide_css">{{s95 Advanced selectors}}</h3>
<p>{{s97 In general, any CSS selector supported by Firefox can be used for element hiding. For example the following rule will hide anything following a div element 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-selectors/}}">W3C CSS specification</a> (note that not all selectors are supported by Firefox yet).}}</p>
<p>{{s98 <em>Note</em>: This functionality is for advanced users only, you should be comfortable with CSS selectors to use it. Adblock Plus won't be able to check the syntax of the selector you are adding, if you use invalid CSS syntax you might break other (valid) rules you have. Check JavaScript Console for CSS errors.}}</p>
+<h3 id="elemhide-emulation">{{elemhide-emulation-title Extended CSS selectors (Adblock Plus specific)}}</h3>
+
+<p>
+ {{elemhide-emulation-explanation-p1 Sometimes the standard CSS selectors aren't powerful enough to hide an advertisement, for those cases we have added some new ones, namely <code><fix>:-abp-has()</fix></code> and <code><fix>:-abp-properties()</fix></code>.}}
kzar 2017/07/17 13:44:29 Could you add "(requires Adblock Plus 1.13.3 for C
hub 2017/07/17 18:19:13 Done.
kzar 2017/07/18 10:26:39 I'm not sure this is done?
hub 2017/07/18 15:50:16 oops. seems I missed checking that change in :-/
+</p>
+<p>
+ {{elemhide-emulation-explanation-p2 When writing an element hiding filter that makes use of 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 those filters are specific to as few domains and elements as possible.}}
+</p>
+<h4>{{abp-properties-title :-abp-properties()}}</h4>
+<p>
+ {{abp-properties-explanation-p1 <code><fix>:-abp-properties(properties)</fix></code> will select elements based on properties of their stylesheet. For example <code><fix>:-abp-properties(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> set to the values <code><fix>300px</fix></code> and <code><fix>250px</fix></code> respectively. Property names are matched case-insensitively. Wildcards can be used so that <code><fix>:-abp-properties(width:*px;height:250px;)</fix></code> this will match any width specified in pixels and height of 250 pixels.}}
kzar 2017/07/17 10:28:57 Could you delete the word "this" directly after th
hub 2017/07/17 12:46:34 Done.
kzar 2017/07/18 10:26:38 I think it should be "...based upon stylesheet pro
kzar 2017/07/18 10:26:39 Please add "Furthermore" before "Wildcards".
hub 2017/07/18 15:50:15 Done.
hub 2017/07/18 15:50:15 Done.
+</p>
+<p>
+ {{abp-properties-explanation-p2 You can also use <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions">regular expressions</a>, by surrounding the properties expression with "/". For example, <code><fix>:-abp-properties(/width:30[2-8]px;height:250px;/)</fix></code> will match width between 302 and 308 pixels and height of 250 pixels.}}
kzar 2017/07/17 10:28:57 A couple of typos in the last sentence, I think it
hub 2017/07/17 12:46:34 Done.
kzar 2017/07/18 10:26:38 I think the comma after the "regular expressions"
hub 2017/07/18 15:50:16 Done.
+</p>
+<p>
+ {{abp-properties-explanation-p3 <em>Note</em>: The <a href="https://adblockplus.org/development-builds/new-css-property-filter-syntax">older syntax</a> for the CSS property filters is deprecated and will be automatically converted to the new format&nbsp;. The syntax to select the style properties remain the same. For example, <code><fix>[-abp-properties='width:300px;height:250px;']</fix></code> will be converted to <code><fix>:-abp-properties(width:300px;height:250px;)</fix></code>.}}
+</p>
+<h4>{{abp-has-title :-abp-has()}}</h4>
+<p>
+ {{abp-has-explanation-p1 <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>&lt;div&gt;</fix></code> that contains an <code><fix>&lt;a&gt;</fix></code> with the class <code><fix>advertiser</fix></code>. The inner selector can be relative to the element scope, and can use any of the pseudo-selectors, including <code><fix>:-abp-has()</fix></code> and will determine whether the selection occur.}}
kzar 2017/07/17 10:28:57 Missing a word at the end of the last sentence, I
hub 2017/07/17 12:46:34 Done.
+</p>
+
<h3 id="elemhide_exceptions">{{s99 Exception rules}}</h3>
<p>
{{s100 Exception rules can disable existing rules on particular domains.}} {{s101 These are mostly
useful to filter subscription authors who are extending another filter subscription that they
cannot change.}} {{s102 For example, the rule <code><fix>##div.textad</fix></code> can be
disabled on <code><fix>example.com</fix></code> using the exception rule
<code><fix>example.com#@#div.textad</fix></code>.}} {{s103 The combination of these two
rules has exactly the same effect as the single rule
<code><fix>~example.com##div.textad</fix></code>.}} {{s104 It is recommended that you use
exception rules only when you cannot change an overly general element hiding rule, in all the
other cases limiting this rule to the necessary domains is preferable.}}
+ {{exception-rules-p6 These exceptions will be applied to <a href="#elemhide-emulation">advanced pseudo-selector rules</a> as well.}}
</p>
<h3 id="elemhide_simplified">{{s105 Simplified element hiding syntax}}</h3>
<p>{{s106 Adblock Plus supports simplified element hiding syntax (e.g. <code><fix>#div(id=foo)</fix></code>) for backwards compatibility only. Using this syntax is discouraged, usual CSS selectors are preferred. Support for this syntax might be removed at some point.}}</p>
<h3 id="generic-specific">{{generic-specific-title Generic / Specific filters}}</h3>
« pages/filter-cheatsheet.html ('K') | « pages/filter-cheatsheet.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld