Дмитрий Радищев (dibr) wrote,
Дмитрий Радищев
dibr

<lj-spoiler>

     Вот же ж блин суп, из семи постесняюсь произнести чего.
     Заинтересовался я, как они ухитрились сделать тэг <lj-spoiler> настолько криво, что если содержимое спойлера помещается в строку с остальным текстом - то всё нормально, а если нет - добавляются два лишних разрыва строки. Оказалось, всё очень просто: для разграничения "заманухи" и "спойлера" используется тэг <div>, который блочный, то есть ведёт себя именно таким образом, а не тэг <span>, ведущий себя более разумно - всегда встраивающий содержимое в общий поток текста. Переключение делается через разный class="" у тэгов, и какой-то шкрипт (не пофиг ли какой), меняющий видимость - в-общем, всё действительно просто.
     Оставив в стороне мотивацию по использованию именно <div> (мотивация "он работал ещё в NCSA Mosaic старых нетскейпах, а <span> - нет" не катит: вхреначить на ту же страницу куда более требовательный аякс им это не мешает, а <span> работает даже в IE6 - куда уж дальше-то совместимость тянуть, до третьей винды что-ли?), попробуем исправить ситуацию. Это, казалось бы, тоже довольно тривиально: ну, давайте срисуем из исходника то, что генерирует ЖЖ на этот тэг, да тупо заменим <div class=""> на <span class=""> - шкрипту не пофиг ли, к чему этот класс прицеплен.

     А вот хрен. Умная жежешечка услужливо срезает class="" в исходнике, введённом пользователем, в результате хитрый план не работает - пользователю отдаются span'ы без класса, и на экран высыпается и "замануха", и сам спойлер одновременно.

     "Слушайте валенки, и не выпендривайтесь", а главное - не пытайтесь ничего изменить! А жаль - хороший тэг... должен был бы быть, если бы его реализацией занялся бы не суп.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 11 comments