diff --git a/docs/general/ad-filtering/create-own-filters.md b/docs/general/ad-filtering/create-own-filters.md index bdb8826da91..8dad66da071 100644 --- a/docs/general/ad-filtering/create-own-filters.md +++ b/docs/general/ad-filtering/create-own-filters.md @@ -4161,6 +4161,8 @@ In most cases, the basis and cosmetic rules are enough to filter ads. But someti HTML filtering rules are supported by AdGuard for Windows, AdGuard for Mac, AdGuard for Android, AdGuard for Linux, and AdGuard Browser Extension for Firefox. Such rules do not work in extensions for other browsers because they are unable to modify content on network level. +The syntax with an optional `value` in the attributes is supported by AdGuard for Windows, AdGuard for Mac, and AdGuard for Android with CoreLibs v1.18 or later. It is also supported by AdGuard Browser Extension v5.2 or later. For the other products and previous versions `value` must **always** be specified. Otherwise, the rule will be treated as incorrect and ignored. + ::: ### Syntax @@ -4170,14 +4172,14 @@ HTML filtering rules are supported by AdGuard for Windows, AdGuard for Mac, AdGu combinator = ">" rule = [domains] "$$" selector *(combinator selector) domains = [domain0, domain1[, ...[, domainN]]] - attributes = "[" name0 = value0 "]" "[" name1 = value2 "]" ... "[" nameN = valueN "]" + attributes = "[" name0[ = value0] "]" "[" name1[ = value2] "]" ... "[" nameN[ = valueN] "]" pseudoClasses = pseudoClass *pseudoClass pseudoClass = ":" pseudoName [ "(" pseudoArgs ")" ] ``` - **`tagName`** — name of the element in lower case, for example, `div` or `script`. - **`domains`** — domain restriction for the rule. Same principles as in [element hiding rule syntax](#cosmetic-elemhide-rules). -- **`attributes`** — a list of attributes that limit the selection of elements. `name` — attribute name, `value` — substring, that is contained in attribute value. +- **`attributes`** — a list of attributes that limit the selection of elements. `name` — required, attribute name; `value` — optional (may not be specified), substring that is contained in attribute value. - **`pseudoName`** — the name of a pseudo-class. - **`pseudoArgs`** — the arguments of a function-style pseudo-class. - **`combinator`** — an operator that works similarly to the [CSS child combinator](https://developer.mozilla.org/en-US/docs/Web/CSS/Child_combinator): that is, the `selector` on the right of the `combinator` will only match an element whose direct parent matches the `selector` on the left of the `combinator`. @@ -4198,6 +4200,20 @@ example.org$$script[data-src="banner"] This rule removes all `script` elements with the attribute `data-src` containing the substring `banner`. The rule applies only to `example.org` and all its subdomains. +If the value of the attribute is omitted in the rule, then the element will be removed if it contains the specified attribute, regardless of its value. +This is also the way to remove the elements whose attributes don't have any value at all. + +```html +
+
+``` + +```adblock +example.org$$div[some_attribute] +``` + +This rule removes all `div` elements with the attribute `some_attribute` on `example.org` and all its subdomains. So, the both `div` elements from the example above will be removed. + ### Special attributes In addition to usual attributes, which value is every element checked for, there is a set of special attributes that change the way a rule works. Below there is a list of these attributes: