В расширениях (я практично сосредоточен на расширениях Chrome) идентификаторы и классы CSS, введенные на страницу, могут вступать в конфликт с другими элементами на странице.
Я пытаюсь определить их имя с помощью префикса расширения, но не совсем уверен. Итак, есть ли способ точно определить имена идентификаторов / классов css?
1 ответ
Это невозможно, если ваше требование «абсолютно уверен». Кто-то всегда может загрузить ваше расширение, посмотреть на имена классов, которые вы используете, а затем изменить CSS своего веб-сайта, чтобы он конфликтовал с вашими именами классов (или, что более вероятно, попытался переопределить). Это особенность, а не ошибка; расширения расширяют веб-страницы, поэтому предполагается, что они могут смешиваться со своими DOM и изменять их.
Если вы хотели изобрести систему, в которой другие не будут намеренно конфликтовать с вашей, почему бы не использовать схему пространства имен Java: взять принадлежащий вам домен и использовать его в качестве префикса, например com-example-myclassname? Немного менее читаемым и не более безопасным будет либо идентификатор вашего расширения, либо случайно сгенерированный шестнадцатеричный хэш SHA-1:
- abcdefghijklmnop-myclassname
- da39a3ee5e6b4b0d3255bfef95601890afd80709-myclassname
Я намеренно не включаю здесь динамические решения, потому что CSS обычно не является динамическим в расширениях или приложениях Chrome. Более того, CSP, вероятно, сделает этот подход чем угодно, но не простым (что хорошо).
Похожие вопросы
Новые вопросы
css
CSS (каскадные таблицы стилей) - это язык таблиц стилей представления, используемый для описания внешнего вида и форматирования документов HTML (язык разметки гипертекста), XML (расширяемый язык разметки) и элементов SVG, включая (но не ограничиваясь) цвета, макет, шрифты, и анимации. Также описывается, как элементы должны отображаться на экране, на бумаге, в речи или на других носителях.