ОсновноеRadiotalkПользовательское
MPCHAT - CMS хостинг чатов для профессионалов
90   •   Посмотреть все темы

критичный баг в готовых решениях, как исправить?

 

1163
Денис @Анатолич
Готовое решение старое, но думаю, что актуальности оно не потеряло и сейчас во многих чатах стоит.
Эта информация скрыта и доступна только зарегистрированным пользователям.

Отредактировано Анатолич - 07.02.2014
2970
удалён @Foggy
break по идее должен помочь
while(text.search(/\[video\](.*?)\[\/video\]/g)>=0){t=text.split('[video]'); if(t[1]) {t2=t[1].split('[/video]');video_c++; if(t2[0]&&video_max>=video_c) { var ss2009=t2[0].replace("watch?v=", "v/");ss400='src="'+ss2009+'&hl=ru&fs=1"';text=text.replace('[video]'+t2[0]+'[/video]','<embed '+ss400+' type=application/x-shockwave-flash allowscriptaccess=always allowfullscreen=true width=300 height=250></embed>') } else {text=text.replace('[video]'+t2[0]+'[/video]','');} break; }};
у меня на форуме сих тегов вовсе нет, так что мне не проверить. попробуй у себя. если не выйдет, попробуй по скрипту его по перемещать. например в конец if и в конец else

1163
Денис @Анатолич
крайне проблематично проверить,
Эта информация скрыта и доступна только зарегистрированным пользователям.
.
да и сбой судя по алертам происходит почти сразу.
Наверное по уму проверка должна производиться до ввода?
если теги стоят неправильно, то должен всплывать алерт и отправка останавливается.
Только я понятия не имею как это сделать 😵

2615
Сергей @Pegass
теги это вообще геморой, можно было бы заменить пару, но ничего не мешает засранцу сделать так [teg]vasya[tag]petya[/tag][/tag]
хз как но надо проверять что за открывающимся тегом идёт закрывающий)))) или использовать не while а регулярки - это по крайней мере в случае косяка выведет фигню а не зависнет забивая стек

1163
Денис @Анатолич
Pegass пишет:

или использовать не while а регулярки

к сожалению не представляю, что это? нельзя ли на конкретном примере, (для видео) показать?

20090
Dimitry @Dimitry
Pegass пишет:

теги это вообще геморой, можно было бы заменить пару, но ничего не мешает засранцу сделать так [teg]vasya[tag]petya[/tag][/tag]
хз как но надо проверять что за открывающимся тегом идёт закрывающий)))) или использовать не while а регулярки - это по крайней мере в случае косяка выведет фигню а не зависнет забивая стек

регулярки решают, на форуме мп пример с картинками...

1163
Денис @Анатолич
Dimitry пишет:

Pegass пишет:

теги это вообще геморой, можно было бы заменить пару, но ничего не мешает засранцу сделать так [teg]vasya[tag]petya[/tag][/tag]
хз как но надо проверять что за открывающимся тегом идёт закрывающий)))) или использовать не while а регулярки - это по крайней мере в случае косяка выведет фигню а не зависнет забивая стек

регулярки решают, на форуме мп пример с картинками...

если по аналогии с картинками, то наверное не получится сделать спойлер.
Там же надо дивы расхлопывать, а для этого нужен id, насколько я понимаю, в решении ридза он как раз циклом и задавался.
Хотя признаюсь честно для меня это дремучий лес. Может кто то подскажет как можно цикл заменить регулярками?

2615
Сергей @Pegass
ну не знаю что там со спойлерами у ридза, а у меня точно регулярка)))

в head
<script>
function spoiler(o)
{
var obj=o.childNodes[1].style; var obj2=o.childNodes[0].childNodes[0];
if(obj.display=='block')
{
obj.display='none';
obj2.innerHTML='<img src=http://radiofull.ru/Style_god/img/forum/plus.png width=10 height=10>';
}
else
{
obj.display='block';
obj2.innerHTML='<img src=http://radiofull.ru/Style_god/img/forum/minus.png width=10 height=10>';
}
}
</script>

в соответствующие места кода

etags[i]=new Array(/\[spoiler=([^\] ]{2,30})\](.*?)\[\/spoiler\]/g,'<blockquote style="margin-bottom:0px;padding:5px;"><div class="incqbox" style="cursor:pointer;" onclick="spoiler(this.parentNode); return false;"><span><img src="http://radiofull.ru/Style_god/img/forum/plus.png" width="10" height="10"></span><b> $1</b></div><div style="margin-top: 10px; display: none; ">$2</div></blockquote>',1);i++;

tags+="<input type='button' class='button2' accesskey='c' value='[+]' style='width: 40px' onclick=ftags('[spoiler]','[/spoiler]') title='Код: [spoiler=заголовок]текст под спойлер[/spoiler]'> ";

Отредактировано Pegass - 07.02.2014