Перейти к контенту
  • 0

BBcode, заменается символ.


Вопрос

Нашел интересную проблему.. Добавляю новый BBCode, допустим тег [more]{content}[/more] (ака спойлер)

HTML-код, которым должен быть заменен BB-код просто до безобразия:

<div onclick="obj=this.parentNode.childNodes[1].style; tmp=(obj.display!='block') ? 'block' : 'none'; obj.display=tmp;return false;"> <b>Развернуть/Свернуть</b> </div><div style="display: none;">{content}</div>

сам по себе этот код работает, но при использовании тега - нет. Начал разбираться, открыл исходный код страницы, а там вот такая интерпретация кода:

<div o;nclick="obj=this.parentNode.childNodes[1].style; tmp=(obj.display!='block') ? 'block' : 'none'; obj.display=tmp;return false;">...и т.д.

То есть, в слове onclick первая буква "o" за каким-то хреном превращается в свой численный код. Естественно код перестает работать.

Собственно, почему оно так работает и как это исправить?

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

Soontir Fel, правильно, отключите эту защиту и дайте-ка адрес вашего форума, а то мои эксплоиты после последнего патча безопасности стали об нее ломаться :D

 

А если серьезно - в тройке из коробки уже есть тег spoiler с точно таким же функционалом, как вы пытаетесь создать. Посмотрите, как он сделан.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Soontir Fel, правильно, отключите эту защиту и дайте-ка адрес вашего форума, а то мои эксплоиты после последнего патча безопасности стали об нее ломаться

Ну во-первых, я не говорил об отключении. Можно запросто написать исключение под этот конкретный случай ;)

А во-вторых, думаю, ваши эксплоиты не сильно вам помогут, ловите адрес - localhost/ipb/ :D

 

Я знаю про тег spoiler, в первом посте я скинул простой код для примера, чтобы понятнее было, а вообще у тега немного другой функционал, суть не в этом.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Вот именно, что суть не в том. Суть в выносе JavaScript за пределы тела поста. На дворе уже не начало 2000-х, пора пользоваться prototype, любезно поставляемой вместе с форумом.

 

<div class='fuck_me'> <b>Развернуть/Свернуть</b> </div><div style="display: none;">{content}</div>

 

и скрипт в шапку:

$$('.fuck_me').observe('click', yeah_ill_do);

function yeah_ill_do(event) {
 this = event.element();
 obj=this.parentNode.childNodes[1].style; tmp=(obj.display!='block') ? 'block' : 'none'; obj.display=tmp;return false;
}

 

Если не заработает - читайте доку и правьте в соответствии с ней.

  • Лайк 1
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.