VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Предпросмотр текста сообщения, Message Quick Preview AJAX
14
делает все то же самое, что и хак из этой темы
за тем исключением, что предпросмотр текста можно увидеть только кликнув по соотв. кнопке* под словом "Сообщение", а не при наборе текста
клик по этому слову работает так же, скрывает кнопку предпросмотра и не показывает ее пока не нажать снова
сделал такой вариант как альтернативу (он же и установлен в данный момент на саппорте)
используется только свой обработчик на яваскрипт, xbbcode.js удален из дистрибутива за ненадобностью
* отправляется запрос из яваскрипта в свой пхп скрипт, который парсит ббкоды и отправляет обратно в браузер уже отформатированный текст
запросы в БД так же НЕ осуществляются, работает только парсер ббкодов, но уже на пхп
в этом варианте парсятся все ббкоды, которые есть на форуме, в том числе и смайлы
инструкция по установке в архиве
А если сделать листенер по тайм-ауту, т.е. чтобы срабатывал запрос в аякс после, скажем трёхсекундной паузы в наборе текста?
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,738
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20271
Репутация в разделе: 7731
0
и когда останавливать таймер?
можно предположить, что после отправки поста
но если узер набил несколько строк текста и умотал по делам на пол дня, а вкладку с этим редактором оставил открытой?
я изначально рассматривал возможные варианты
ничего не придумалось кроме тех двух, что уже выложил, это:
парсинг ббкодов при наборе текста, но без использования PHP + Ajax - только голый яваскрипт
парсинг ббкодов по клику на кнопке предпросмотра, с использованием PHP + Ajax - но без парсера ббкодов на яваскрипте (он здесь ну никак не нужен вобщем то )
если есть идеи/варианты - делайте =)
скрипты публичные и бесплатные
будет рабочий вариант, поделитесь в соотв. разделе
@Core dumped
Продвинутый
Join Date: Jun 2015
Posts: 62
Версия vB: 3.8.x
Reputation:
Опытный 26
Репутация в разделе: 15
1
Quote:
Originally Posted by kerk
но если узер набил несколько строк текста и умотал по делам на пол дня, а вкладку с этим редактором оставил открытой?
То предпросмотр выполнится один раз, примерно через 3 секунды после окончания ввода?
Там же по-идее событие просто будет ставить флаг, который таймер будет периодически просматривать и на его основании принимать решение. Получил предпросмотр, выставил флаг в false и уснул, до тех пор пока пользовательский ввод (Какой-нибудь keyUp там или типа того) не выставит его обратно.
Ну или вообще на каждое нажатие создавать свой таймер с перезаписью в последующих. Не было нажатия за три секунды - таймер выполнился, были - он перезаписался и выполнится лишь через 3 секунды с момента последнего нажатия.
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,738
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20271
Репутация в разделе: 7731
0
setTimeout()
или setInterval()
?
@Core dumped
Продвинутый
Join Date: Jun 2015
Posts: 62
Версия vB: 3.8.x
Reputation:
Опытный 26
Репутация в разделе: 15
0
В первом случае интервал, во втором timeout.
В псевдокоде в первом случае:
Core dumped добавил 15.07.2015 в 00:40
Ой ей-ей, в первом конечно же после constructPreview changedFlag = false надо ставить. Вот как раз пример того, как не хватает правки своих постов.
Last edited by Core dumped : 07-15-2015 at 01:40 AM.
Reason: Добавлено сообщение
// обработчик отправки поста по хоткею Ctrl+Enter
function myfunction(e)
{
e = e || YAHOO.util.Event.getEvent(e);
if(e.ctrlKey && ((e.keyCode == 10) || (e.keyCode == 13)))
{
var targ = YAHOO.util.Event.getTarget(e);
qr_prepare_submit(targ.form, 0);
if(!allow_ajax_qr)
{
targ.form.submit();
}
return false;
}
}
// обработчик отлова нажания клавиш
YAHOO.util.Event.on('vB_Editor_QR_textarea', "keypress", function(e)
{
myfunction(e);
}, this, true);
@True
Администратор
Join Date: Nov 2007
Награды в конкурсах:
Posts: 1,317
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 1306
Репутация в разделе: 398
0
Quote:
Originally Posted by kerk
и когда останавливать таймер?
срабатывает 1 раз спустя 3 секунды, потом запускается только после нового нажатия на клавишу.
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,738
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20271
Репутация в разделе: 7731
0
т.е. пока человек печатает, таймер постоянно перезаписывается и предпросмотр не выполняется?
@Core dumped
Продвинутый
Join Date: Jun 2015
Posts: 62
Версия vB: 3.8.x
Reputation:
Опытный 26
Репутация в разделе: 15
0
Quote:
Originally Posted by kerk
addEventListener - не по феншую
Ок, в следующий раз буду писать bindEvent, чтобы более явно указывать на псевдокод. К сожалению не могу поправить свое сообщение, так что останется там eventListener.
Про библиотеки в данном случае особо речи нет, это просто иллюстрация слов, не более. Порой пара строк псевдокода позволит лучше раскрыть идею, чем пара-тройка абзацев.
Quote:
Originally Posted by kerk
т.е. пока человек печатает, таймер постоянно перезаписывается и предпросмотр не выполняется?
Ну да, если пойти по второму сценарию. Там это, в общем-то наглядно показано, остается имплементировать логику constructPreview. В первом случае таймер будет всего один, но будет сложнее откладывать выполнение на три секунды после последнего нажатия. То бишь в первом варианте проверка необходимости предпросмотра будет каждые 3 секунды.