Утечка стилей

Oct 27, 2008 23:54


Уважаемые разработчики.

Сегодня мне сообщили, что некоторые html-шаблоны, которые я включал в ЖЖ-расширение для Firefox, перестали работать как должно. Я попробовал разобраться и наткнулся на странность: кажется, ЖЖ-скрипты, удалявшие раньше из постов и комментариев пользователей нежелательные теги, JavaScript и определённые стилистические правила, стали вести себя непонятно, а именно: по какому-то непостижимому принципу из html-тегов в комментариях вычищаются атрибуты стиля с определёнными CSS-правилами, причём почти такие же правила с другими значениями почему-то остаются. Ниже можно увидеть наглядный пример этой странности - скриншот моего ответа пользователю, сообщившему мне о проблеме (приходится постить скриншот комментария, потому что в постах этой проблемы нет).



Чтобы быть уверенным, что проблема не на клиентской стороне, вот код комментария из страницы, как она возвращается сервером ЖЖ:

Очень странно. В посте такая цитата выглядит, как должно. И если отвечать на Ваш комментарий на отдельной странице, он тоже выглядит нормально. Но как только он попадает в поток комментариев, вся информация о стилях в подблоках оказывается удалённой. Думаю, это может быть какая-то новая защита в ЖЖ, от стилистических злоупотреблений. Я напишу в суппорт, надеюсь, объяснят. Спасибо за сообщение.

Вот, поэкспериментировал:

Обычный блок с правым выравниванием не работает, стиль просто удаляется из кода:

div style="text-align: right; border: 1px solid black;"


Хотя с центральным выравниванием стиль сохраняется:

div style="text-align: center; border: 1px solid black;"


Удаляется стиль, если есть внутренние поля с уточнением их стороны:

div style="padding-left: 20px; border: 1px solid black;"


А если поставить общее значение полей, без указания стороны, стиль сохраняется:

div style="padding: 20px; border: 1px solid black;


Если писать это в посте, всё работает.

Ну ваще...

Пожалуйста, если html-фильтры Живого Журнала в последнее время претерпели какие-то изменения и добавились новые запрещающие правила, сообщите об этом подробнее.

UPD 1.

Можно сравнить, один и тот же код в посте и в первом комментарии здесь ниже:

Повторение эксперимента.

Стиль блока сохранён:

div style="text-align: right; border: 1px solid black;"

Стиль блока сохранён:

div style="text-align: center; border: 1px solid black;"

Стиль блока сохранён:

div style="padding-left: 20px; border: 1px solid black;"

Стиль блока сохранён:

div style="padding: 20px; border: 1px solid black;"

UPD 2.
Ещё один вопрос. Никто не знает, где теперь можно посмотреть действующий код Живого Журнала? Раньше он был доступен на http://code.sixapart.com/trac/livejournal, но теперь, после продажи сервиса, эти адреса выдают только ошибки. На сайте СУПа никаких ссылок на код не нашёл; может быть, плохо искал.

Хотелось проверить подозрение: похоже, что после недавних шалостей с комментариями (пользователи постили в них огромные картинки, закрывающие весь экран), в модуль cleanhtml.pl или ещё куда-то добавили код, который тупо вычищает весь CSS со словами left и right (потому что упомянутая зловредность наверняка использовала свойство position вместе с top, right, bottom и left). Если так, то это, кажется, слишком варварское решение проблемы.

проблема, bugs, вопрос

Previous post Next post
Up