Насколько ограничена поддержка уровня 4 в Safari Content Blockers?
Еще в 2015 году, когда были выпущены блокировщики содержимого Safari, было сказано, что они поддерживают выражения селекторов CSS уровня 4.
Однако даже сегодня они не поддерживают, по крайней мере, :has()
оператор.
Какие части спецификации только для уровня 4 поддерживает Safari?
Это единственное, что поддерживается (на пост в блоге Webkit):
:matches()
, :not()
, :nth-child()
, а также :nth-last-child()
?
1 ответ
Safari 9, выпущенный в 2015 году, поставляется с поддержкой следующих селекторов уровня 4:
- Нечувствительные к регистру селекторы атрибутов, например
[type="text" i]
:any-link
- Уровень 4
:lang()
- Уровень 4
:not()
:matches()
- Уровень 4
:nth-child(An+B of S)
(подразумевается также для:nth-last-child()
) :placeholder-shown
Начиная с 2018 года, новые селекторы уровня 4 не были добавлены с тех пор. Тем не менее, Safari остается единственным браузером, который поддерживает все, кроме первого и последнего из них.
Нет известных браузерных реализаций :has()
и, честно говоря, я бы не выдержал ни одного всплытия в течение следующих нескольких лет. Учитывая, что реализации браузера оптимизированы для сопоставления CSS-селекторов в режиме реального времени, реализация сопоставления моментальных снимков потребует нетривиального объема работы, которая, как кажется, не является той работой, которую поставщики хотят инвестировать в данный момент. РГ все еще изучает свои возможности в отделе производительности.