Я пытаюсь понять механизм того, как пользовательские расширения браузера (например, Stylus) внедряют свой CSS. Насколько я понимаю, таблицы стилей с происхождением CSS «пользовательский стиль» имеют более низкий приоритет, чем таблицы стилей с происхождением CSS «авторский стиль», но выше, чем таблицы стилей с происхождением CSS «пользовательский агент». (См., например,
https://web.dev/learn/css/the-cascade).
Мой вопрос вращается вокруг двух моментов:
- Как расширения браузера в пользовательском стиле внедряют свой CSS?
С одной стороны, кажется логичным, что им следует использовать API расширений. например chrome.tabs.insertCSS с cssOrigin: 'user', чтобы правильно сигнализировать о том, что таблица стилей исходит от пользователя. Однако, учитывая, что пользовательские стили имеют более низкий приоритет, чем авторские, не будет ли это означать, что в большинстве случаев пользовательские стили, применяемые через расширения браузера, будут неэффективны, поскольку они будут переопределены авторскими стилями? Этот прогноз не соответствует моему опыту, поскольку пользовательские стили, применяемые с помощью таких расширений, как Stylus, часто успешно переопределяют стили автора.
- Есть ли способ программно выяснить, является ли таблица стилей пользовательским стилем?
Учитывая различия в происхождении CSS, я ищу метод программного определения того, является ли таблица стилей был внедрен как пользовательский стиль (в смысле: наличие «пользовательского стиля» CSS-происхождения), а не как авторский стиль. Предоставляет ли браузер какой-либо API, позволяющий это дифференцировать? Если нет, существуют ли эвристики или шаблоны, которые могут помочь определить происхождение таблицы стилей?
Подробнее здесь:
https://stackoverflow.com/questions/786 ... e-the-user