Перейти к контенту
  • 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
Ссылка на комментарий
Поделиться на других сайтах

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

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

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

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