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

Автосохранение на джаваскрипт


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

Зачем это надо:

  • Если произошел "глюк" при отправке сообщения, текст сообщения можно восстановить;
  • У меня сделана "быстрая цитата" на джаваскрипт. При переходе на другую страницу многстраничного топика есть возможность скинуть в редактор текст, цитировавшийся и писавшийся на прошлой странице топика.

Преимущества джаваскрипт:

  • В отличие от аякса, нет глюков при плохом коннекте;
  • Простота установки модификации.

Недостаток:

  • Не более 6000 букв; всё что свыше обрежется.

 

Установка мода:

 

skin_post.php (в двух местах) и skin_topic.php (в одном месте):

Найти:

onChange="storeCaret(this);"

Заменить на:

onChange="storeCaret(this);if(value!='')window.name=value;"

 

Я у себя заменил кнопку вставку флеши кнопкой восстановления. Для этого:

 

ubbc.js

Найти:

html += ((flash) ? makeLink("ubbFlash();",'[F]lash объект') + makeImage('/flash.gif','23','22','[F]lash объект') + '</a>' : '');

Заменить на:

html += makeLink("ubbFlash();",'Восстановить[F]') + makeImage('/flash.gif','23','22','Восстановить[F]') + '</a>';

 

Найти:

html += ((flash) ? makeButton("ubbFlash();",'SWF','[F]lash объект','f') + makeImage('/pixel.gif',1,1,'') : '');

Заменить на:

html += makeLink("ubbFlash();",'Восстановить[F]') + makeImage('/flash.gif','23','22','Восстановить[F]') + '</a>';

 

Найти:

  function ubbFlash() {
var url = 'http://'; var h = ''; var w = '';
var text = getText();
if (text && isUrl(text)) { url = text; text = ''; }
url = prompt('Введите URL Flash объекта:',url) || '';
w = prompt('Введите ширину Flash:\nMax = '+flash_w, w) || '';
h = prompt('Введите высоту Flash:\nMax = '+flash_h, h) || '';
if (isNaN(w) || (w > flash_w)) { w = flash_w; }
if (isNaN(h) || (h > flash_h)) { h = flash_h; }
if (!isUrl(url)) { returnFocus(); return; }
var code = ((text) ? text + ' ' : '') + '[flash=' + w + ',' + h + ']' + url + '[/flash]';
ubbCode(code);
 }

Заменить на:

  function ubbFlash() {
recoded=window.name+'\n\n';
ubbCode(recoded);
 }

 

flash.gif

Нарисовать самому или взять мой с http://pharm-forum.ru/html/UBBC/flash.gif

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

Весь контент сохраняется в имени окна?!?

Да.

Я давно использую этот трюк: имя окна в качестве буфера обмена при переходе со страницы на страницу.

Есть еще возможность сохранять в window.status, тоже 6-килобайтный объект, но в отличие от имени окна он виден пользователям, некрасивенько... :D

 

 

 

Хе-х с именем окна это жеско придумано. Может лучше в куки кидать до момента гарантированной отправки?

Не лучше.

Во-первых, в куках лимит 4 Кб; в имя окна можно вогнать до 6 Кб.

Во-вторых - намного вожнее - при обрезке всего, что свыше 4 Кб, обрезка идет не по самой длинной записи, а по последней записи. Могут начаться вылеты авторизации, потеря информации о прочитанных/непрочитанных топиках...

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

  • 2 недели спустя...
А в опере просто можно нажать кнопочку "назад" и весь текст на месте :D
Ссылка на комментарий
Поделиться на других сайтах

А в опере просто можно нажать кнопочку "назад" и весь текст на месте ;)

В большинстве случаев, да.

Но от случайного нажатия F5 Опера не спасает :D

И от потерянной сессии Опера не спасает. Например, пока набирал текст ответа, слетела сессия. При отправке попадаешь на страницу запроса авторизации, и дальше ку-ку, сессия уже другая, и по кнопке "назад" Опера наподобие ослика обновляет страницу...

 

 

Основной смысл мода для меня не столько в автосохранении, сколько в дополнении моду быстрой цитаты.

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

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

Гы, а какое отношение сессия IPB (!) имеет к опере?

Опере фиолетово какая сессия.

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

Спасибо, пользователям понравилось :D большинство из них не желают переходить ни на какую Оперу и пользуются тем, что есть.

 

Только я сделала сохранение на onblur - зачем на onchange?

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

Только я сделала сохранение на onblur - зачем на onchange?

Вроде бы существует возможность отправки сообщений по контрол-энтеру.

У меня были сомнения, возникнет ли в таком случае событие потери фокуса, а проверять было лень.

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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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

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

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