Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Форум. Глюк bb-кодов.
 
 автор: deimand   (05.03.2011 в 04:50)   письмо автору
 
 

При обрамлении текста, если прокрутка поля была опущена вниз, она сбрасывается на начало, т.е. на верх, и теряется из поля зрения то, что выделял. При небольших объемах кода это не страшно, но когда текста довольно много - жутко напрягает. Странно что ни кто не жаловался.

так выглядит код в данный момент

  function tag(text1, text2) 
  { 
     if ((document.selection)) 
     { 
       document.form.message.focus(); 
       document.form.document.selection.createRange().text = text1+document.form.document.selection.createRange().text+text2; 
     } else if(document.forms['form'].elements['message'].selectionStart != undefined) { 
         var element    = document.forms['form'].elements['message']; 
         var str     = element.value; 
         var start    = element.selectionStart; 
         var length    = element.selectionEnd - element.selectionStart; 
         element.value = str.substr(0, start) + text1 + str.substr(start, length) + text2 + str.substr(start + length); 
     } else document.form.message.value += text1+text2; 
  }


Чтобы исправить глюк, нужно добавить всего пару строк, а именно:

  function tag(text1, text2)
  {
     if ((document.selection))
     {
       document.form.message.focus();
       document.form.document.selection.createRange().text = text1+document.form.document.selection.createRange().text+text2;
     } else if(document.forms['form'].elements['message'].selectionStart != undefined) {
         var element    = document.forms['form'].elements['message'];
         // сохранить позицию скролла
         var scroll = element.scrollTop;
         var str     = element.value;
         var start    = element.selectionStart;
         var length    = element.selectionEnd - element.selectionStart;
         element.value = str.substr(0, start) + text1 + str.substr(start, length) + text2 + str.substr(start + length);
         // вернуть как было
         element.scrollTop = scroll;
     } else document.form.message.value += text1+text2;
  }


И будет пользователям мозиллы счастье.

  Ответить  
 
 автор: cheops   (05.03.2011 в 09:25)   письмо автору
 
   для: deimand   (05.03.2011 в 04:50)
 

Большое спасибо. Патч добавлен.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования