Отключить стиль CSS для определенного фрагмента страницы - PullRequest
1 голос
/ 28 апреля 2011

Я искал и нашел несколько похожих сообщений, но ни один из них не ответил на мой "специальный" вопрос.

У меня есть страница со статическим стилем верхнего и нижнего колонтитула. Посередине (контент) может быть какой-то HTML + CSS от пользователей.

Чего я не хочу, так это того, что они определяют некоторые правила CSS, которые могут испортить верхний и нижний колонтитулы или весь текст.

Использование iframe на самом деле не является решением.

Спасибо

Ответы [ 2 ]

3 голосов
/ 28 апреля 2011

Самое простое решение, предусматривающее очистку входных данных, состоит в том, чтобы присвоить всем вашим атрибутам стиля флаг! Важный, а затем найти и заменить любые флаги! Важных, которые пользователь мог ввести в свой пользовательский CSS.

Вот еще немного информации об этом флаге: http://www.smashingmagazine.com/2010/11/02/the-important-css-declaration-how-and-when-to-use-it/

Более простое решение - удалить все теги из пользовательского ввода и разрешить применение CSS только к атрибуту стиля определенного элемента.

Однако любое из этих решений далеко не пуленепробиваемо. Пользователь может просто создать абсолютно позиционированный элемент, чтобы скрыть любые части сайта, которые он желает. Если вы хотите остановить это, у вас не будет другого выбора, кроме интеллектуального анализа каждого атрибута стиля, который они задают, и удаления тех, которые потенциально могут повредить макет веб-сайта. Это очень деликатная операция - и если предположить, что вы можете сделать это правильно, любой нежелательный атрибут уменьшит полезность того, чтобы позволить им писать свои собственные стили.

Я думаю, вы должны спросить себя: действительно ли вы доверяете этим пользователям писать свои собственные CSS и HTML? Или может быть лучше исследовать текстиль или уценку *? Если вы доверяете этим пользователям, разве это не должно быть проблемой? Я полагаю, что больше информации о природе этого контента поможет мне найти более подходящие решения.

* Я не могу опубликовать прямую ссылку на домашнюю страницу из-за мер по предотвращению спама в StackOverflow. Первая ссылка Google Search "Markdown", где вы можете узнать больше. К сожалению.

3 голосов
/ 28 апреля 2011

Код YUI3 CSS Reset может работать контекстуально.

Просто включите код:

<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.3.0/build/cssreset/reset-context-min.css">

И добавьте свой CSS после пользовательский CSS, так что ваш оценивается последним.Затем сбросьте CSS для ваших элементов, задав им атрибут класса, подобный следующему:

class="yui3-cssreset"

Просто убедитесь, что ваши объявления настолько специфичны, насколько это возможно, и что все они !important.

Но почему вы позволяете пользователю предоставлять свой собственный CSS?Вы делаете знаете, что IE может интерпретировать JavaScript из файла CSS с некоторыми черными магическими свойствами CSS?

Это небезопасно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...