AdguardTeam / ExtendedCss

A TypeScript library for non-standard element selecting — :contains(), :matches-css(), etc., and applying CSS styles with extended properties.
GNU General Public License v3.0
65 stars 9 forks source link

Cannot apply different rules to the same element #85

Closed ameshkov closed 4 years ago

ameshkov commented 5 years ago

@a-ladanov commented on Sat Jun 08 2019

Steps to reproduce

  1. Установить связку фильтров Easylist + RUAdList для uBlock Origin (его можно установить по ссылке https://easylist-downloads.adblockplus.org/advblock+cssfixes.txt)
  2. Зайти на https://www.sports.ru/

Expected behavior

Страница отфильтрована, без пустых участков.

Actual behavior

Существует большой отступ от шапки сайта.

Screenshot: ![123](https://user-images.githubusercontent.com/18179397/59151240-1c169b00-8a49-11e9-9fb9-ed5a5d05f8d4.png)

Your environment

Судя по последним релизам расширения, появилась поддержка правил вида #?#, которых много в Ruadlist и особенно много в версии для uBlock Origin. Однако на примере выше, не все правила конвертируются или возникают какие-то конфликты правил. В Ruadlist отступ убирает правило sports.ru,tribuna.com#?##branding-layout:not(#id):style(margin-top: 96px !important) Если добавить это правило в пользовательский фильтр, оно конвертируется и работает. Однако, в сочетании Easylist+Ruadlist для uBlock Origin, куда оно входит - правило не работает и вообще не появляется в журнале фильтрации.


@ameshkov commented on Mon Jun 10 2019

Интересная проблема.

В общем, в руадлисте есть два правила, которые применяются как #?## к одному и тому же элементу. А у нас в ExtCSS есть похоже проблема -- к одному элементу может быть применено только одно правило. Я пожалуй перетащу в нужный репозиторий этот баг.

А исправляется он кстати элементарно, нужно #?# заменить на обычное правило ## (я вообще не понимаю такую особую любовь к #?# - они медленнее)