Add ability to remove 'text' node
Related to - https://github.com/AdguardTeam/ExtendedCss/issues/106 Another issue when it could be useful - https://github.com/AdguardTeam/AdguardFilters/issues/146786 https://github.com/AdguardTeam/AdguardFilters/pull/146872
Test page - https://jsfiddle.net/yehz25L4/
Code:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id='test'> Advertisement <p> Test </p>
<p> 1234 </p>
<p> qwerty </p>
</div>
</body>
</html>
Rule which should remove text Advertisement:
fiddle.jshell.net#$?#:xpath(//div[contains(@id,"test")]/text()[contains(.,'Advertisement')]) { remove: true; }
ExtendedCss.query which should match element:
ExtendedCss.query(`:xpath(//div[contains(@id,"test")]/text()[contains(.,'Advertisement')])`)
I might be wrong, but I guess that it doesn't work currently, because isHtmlElement
https://github.com/AdguardTeam/ExtendedCss/blob/7d2957ffbf92c7f082a861276024e733fd0a8477/src/common/utils/nodes.ts#L87-L89
returns false for text node and probably due to this, element is not matched.
@slavaleleka can we assign it to release v2.1?
yes