@salimov2292

Почему у сайта такие странные классы?

Привет!

У сайта имеются странные классы: SettingsPage__title, ___Tag___3ts3I __use--kind___3X81B __use--kind_body___16mdq

Скажите, пожалуйста, как обойти их, чтобы с помощью расширения стилизовать их? На каком-то другом сайте, где есть классы по БЭМ я могу с помощью JS стилизовать цвет, фон, а на таких сайтах, где есть такие классы нет.

const btnka = document.querySelector('.question__title');
btnka.style.backgroundColor = 'red';

На обычном сайте этот код окрашивает элемент, а на сайте с классами SettingsPage__title, ___Tag___3ts3I __use--kind___3X81B __use--kind_body___16mdq не трогает стилизацию.

Мне подсказали, что чтобы изменить цвет, то надо как-то приоритет настроить, но как? Я пишу расширение и оно должно окрашивать кнопку, а оно не окрашивает, ибо класс странный
  • Вопрос задан
  • 436 просмотров
Решения вопроса 1
MrDecoy
@MrDecoy Куратор тега JavaScript
Верставший фронтендер
У вас querySelector выдаёт null. Выше, в тексте ошибки.
То, что на других сайтах работает, не значит что везде будет работать. Значит на других сайтах блоки которые вы меняете не асинхронно подгружаемые или загружаются раньше чем расширение .

Тут можно посмотреть в сторону mutation observer, либо в head добавить кастомную секцию style где будет css меняющий стили этого блока с important. То есть найти элемент head, создать элемент style, задать текстовое содержимое для style - css правило, добавить style в head.

Код от автора вопроса, решивший проблему по вышеописанному лагоритму:
let head = document.getElementsByTagName('head')[0];
let styleR = document.createElement('style');
head.appendChild(styleR);
styleR.innerHTML =
  '.amber-button_theme_accent { background-color: #FA8072 !important; }';
head.appendChild(styleR);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы