Редактирование : отбеливатель является оберткой вокруг html5lib, который делает еще легче использовать в качестве основанного на белом списке дезинфицирующего средства.
html5lib
идет с основанным на белом списке дезинфицирующим средством HTML - это легко разделить его на подклассы для ограничения тегов и приписывает пользователей, позволяются использовать на сайте, и это даже пытается санировать CSS при разрешении использования эти style
атрибут.
Вот теперь, я использую его в своем клоне Переполнения стека sanitize_html
служебная функция:
http://code.google.com/p/soclone/source/browse/trunk/soclone/utils/html.py
я бросил все нападения, перечисленные в XSS Cheatsheet ha.ckers.org (которые являются ловко доступны в формате XML в нем после работающей Скидки с цены к преобразованию HTML с помощью python-markdown2 , и это, кажется, поддержало хорошо.
редактор WMD компонент, который в настоящее время использует Stackoverflow, является проблемой, хотя - я на самом деле должен был отключить JavaScript для тестирования XSS Cheatsheet нападения, поскольку вставка их всех в WMD закончила тем, что дала мне окна предупреждений и заменила страницу пустым местом.
Вы можете указать свою функцию так:
<%= Ajax.ActionLink("YourAction",new AjaxOptions{ OnSuccess="swfu", UpdateTargetId = "spanButtonPlaceholder" }) %>
, чтобы ваша функция swfu вызывалась, если ваше обновление прошло успешноl
теги находились в скрытом состоянии, jQuery добавил к каждому из них атрибут под названием oldBlock
. Затем я понял, что это было сделано для временного хранения значения CSS display
, когда элемент скрыт, чтобы соответствующее значение можно было восстановить, когда элементы будут снова показаны.
Все, что мне нужно сделать, поэтому устанавливает соответствующее значение для отображения, прежде чем я скрою элементы.
Начальное состояние:
<div style="text-align:right; width:100%;">
<span style="display:inline">
<input type="button" value="Button1" />
</span>
...
</div>
Вызов .hide ()
переводит нас в следующее состояние:
<div style="text-align:right; width:100%;">
<span style="display:none" oldBlock="inline">
<input type="button" value="Button1" />
</span>
...
</div>
Вызов show ()
возвращает нас к этому состоянию:
<div style="text-align:right; width:100%;">
<span style="display:inline">
<input type="button" value="Button1" />
</span>
...
</div>
Основная проблема заключалась в том, что я НЕ давал элементам
значение для display
в моем исходном состоянии. Следовательно, они неявно получат значение браузера по умолчанию, которое, как я и ожидал, оказывается встроенным
. Однако, jQuery будет использовать атрибут oldBlock
, только если вы явно установите значение для display
до того, как вызовете функцию hide ()
. Если нет атрибута oldBlock
, функция show ()
использует значение по умолчанию блока
.
Вместо использования show / hide используйте addClass / removeClass и иметь стиль, который вы хотите применить, настроенный с помощью класса.
.hidden
{
display: none;
}
.inline
{
display: inline;
}
.block
{
display: block;
}
Пример использования:
$('.menuitem').hover(
function() {
$(this).parent()
.find('span')
.removeClass('inline block')
.addClass('hidden');
$(this).addClass('inline');
},
function() {
$(this).addClass('inline');
}
});
У меня не было этой проблемы, но если вам нужно, вы можете явно установить свойства css следующим образом:
$(this).show('fast').css("display","inline");
У меня не было этой конкретной проблемы, но для большего контроля используйте .toggleClass ( )