Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тэги Форума и Мозилла, Можно исправить? 
:(
    Опции темы
sergejzr
  Дата 19.6.2004, 03:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 35
Всего: 360



Уважаемая администрация форума,
недавно я перешёл на замечательный и положительно обсуждаемый на форуме броузер Mozilla Firefox.
Cheba помог мне его настроить и я был бы доволен Мозиллой... Если бы не одно маленькое, но очень нудное "НО"..

При забивании постов Мозилла ведёт себя не так,как эксплорер - неправильно работают тэги..
Именно, хотелось бы выбрать фразу, нажать на кнопку и фраза оказалось бы обрамлена тэгами.
Поэтому я для теста переписал функции в файле ubbc.js. теперь мозилла работает прекрасно.

Можно было бы изменить этот файл соответственно на сервере. Это принесло бы ОГРОМНУЮ радость всем юзерам Нетскейпа и его производных. Ниже привожу изменённые мной функции.

Так как я на ЯваСкрипте не ездок(на нём это моя первая попытка), хотелось бы попросить многоуважаемыхSardar и Cheba, как специалистов взглянуть на этот код.

Хочу ещё раз повторить, что изменение скрипта облегчило общение на форуме большому числу людей.

ubbc.js : 192 function getText()
Код
function getText() {
/*Для эксплорера оставим как было.*/
       if (ie) {
         return ((form["Post"].createTextRange && form["Post"].caretPos) ? form["Post"].caretPos.text : '');
       }
       
 /*пошёл нетскейп/мозилла*/
       if(n6) {
       
       selectedtext="";
       /* обнулим переменные*/
       startPoint=selection_length=0;

/*находим индех старта выборки*/
       startPoint=form["Post"].selectionStart;

/*вычисляем длинну выборки*/
       selection_length=form["Post"].selectionEnd-form["Post"].selectionStart;

/*если выборки не существует, то возвратим нолик.*/
       if(selection_length==0){return 0;}

/*забираем техт из поста*/
       whole_text=form["Post"].value;

/* вырезаем и возвращаем выборку*/
       selectedtext=whole_text.substr(startPoint,selection_length);
       return selectedtext;
       }
/*Тут незнакомый броузер так было раньше для всех, кроме эксплорера*/
       return 0;
 }


ubbc.js : 141 function function ubbCode(code)
Код
/////////////////////////////
// Code inserter
//
 function ubbCode(code) {
 /*Для эксплорера оставим как было*/
 if(ie){
   if (form["Post"].createTextRange && form["Post"].caretPos) {
     var caretPos = form["Post"].caretPos;
     caretPos.text = code;
   } else { form["Post"].value += code; }
   }
   
  /*пошёл нетскейп/мозилла*/
  if(n6) {
         
          selectedtext="";
          startPoint=selection_length=0;
           /*Зажаем вспомогательные переменные на начало и конец выборки*/
          startPoint=form["Post"].selectionStart;
          endPoint=form["Post"].selectionEnd;
          /*Выборки не было*/
          if(startPoint==endPoint){
          }
          else{
         
          whole_text=form["Post"].value;
          /*Тут делим техт из поста на две части 1) до выборки 2) после выборки*/
          firstPart=whole_text.substr(0,startPoint);
          lastPart=whole_text.substr(endPoint,whole_text.length-endPoint);
           /*ну и запишем правильный текст обратно в пост*/
          form["Post"].value=firstPart+code+lastPart;
          }
         
       }
   form["Post"].focus();
 }


Вот такой документ..
biggrin.gif biggrin.gif biggrin.gif biggrin.gif


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Wowa
Дата 19.6.2004, 03:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 79
Всего: 290



Хорошо, sergej.z - хорошая работа! После того, как знатоки яваскрипт подтвердят оптимальность кода и неглючность - будем ставить на форум.
PM WWW   Вверх
Monty
Дата 19.6.2004, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Advanced Lamer
****


Профиль
Группа: Участник Клуба
Сообщений: 3511
Регистрация: 3.4.2003
Где: Гваделупа

Репутация: 1
Всего: 27



Цитата
Хорошо, sergej.z - хорошая работа! После того, как знатоки яваскрипт подтвердят оптимальность кода и неглючность - будем ставить на форум.

Вот эту цитату ^^^ я сделал с помощью ">> Вставка цитаты <<" из браузера Mozilla FireFox 0.9 ... но она не работает в Опере smile.gif


--------------------
...
О, вещая моя печаль,
О, тихая моя свобода
И неживого небосвода
Всегда смеющийся хрусталь!
PM MAIL ICQ   Вверх
sergejzr
Дата 19.6.2004, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 35
Всего: 360



Цитата
Monty
..но она не работает в Опере ..


Мда.. Я конечно начал изучать ЯваСкрипт вчера в 11 часов ночи, но уже могу сказать, что опера+ЯваСкрипт = старнные вещи.
Мало того, что докуменатция по Яваскрипт на Оперу практически отсутсвует, так ещё и программно определить Оперу - проблема. Говорит, что она - Эксплорер.
Я просто хотел и для Оперы функцию сразу попробовать. Не нетскейповские, не эксплореровские функции она не понимает...

Кастати, Админ, Там ещё пару глюков в скрипте из за неправильного разделения Нетскейп/Експлорер... Я сейчас не дома.. Потом выложу проблему. Хотя ошибка практически не влияет на ход работы, в ЯваКонсоли на мозилле ona выдаeтся.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Sardar
Дата 20.6.2004, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 6
Всего: 317



sergej.z не плохо smile.gif
Код
if(startPoint==endPoint){ }

не нужно и фокус поставить в начале функции. Код хороший.
Переписал:
Код
 var post=document.getElementById("test"); //ссылка по другому берется, сделал для удобства
 post.focus();
 var firstPart=whole_text.substring(0,post.selectionStart);
 var lastPart=whole_text.substr(post.selectionEnd);
 post.value=firstPart+code+lastPart;

Xорошо бы скрипты пересмотреть, что бы под оперу было.
Проблема: selectionStart; selectionEnd; не существуют ние в ИЕ ни в Опере. ИЕ имеет свой способ через обьект selection, а вот Опера курит в сторонке...


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Medved
Дата 20.6.2004, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 1
Всего: 154



Здорово! Я тоже мозиллу юзаю, и проблема с тэгами меня тоже достала! Поддерживаю!


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
sergejzr
Дата 21.6.2004, 03:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 35
Всего: 360



Вот тут можно испытать функции на деле.
http://www.iwi-iuk.org:8081/pr/vingrad/

1)Подправил немного скрипт по советам Sardar'a.
2) в мозилле по моему всё пашет на 100%
3)Вставка цитаты работает в опере.
4)Тэги в опере так и не работают.. Почему то она не хочет делать выборку из TextArea ..


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Monty
Дата 21.6.2004, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Advanced Lamer
****


Профиль
Группа: Участник Клуба
Сообщений: 3511
Регистрация: 3.4.2003
Где: Гваделупа

Репутация: 1
Всего: 27



вроде у меня в Опере и в Мозиле Огненая Лиса работает все что мне надо smile.gif ... в том числе и " >> Вставка цитаты <<" smile.gif


--------------------
...
О, вещая моя печаль,
О, тихая моя свобода
И неживого небосвода
Всегда смеющийся хрусталь!
PM MAIL ICQ   Вверх
sergejzr
Дата 21.6.2004, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 35
Всего: 360



Что и как менял....

Опера:
В опере при нажатии на ссылку выборка пропадает, поэтому надо копировать выборку уже при mouseover. Для этого надо писать onmouseover вместо onmousedown непосредственно в генерируемом ХТМЛ.
было:
Цитата

<a href="javascript:Insert(selection)" onmousedown="get_selection()">Вставка цитаты</a>

стало:
Цитата

<a href="javascript:Insert(selection)" onmouseover="get_selection()">Вставка цитаты</a>

________________________________________________________________________

Мозилка:
Sardar, ссылку твоим образом мозилла к сожалению не берёт. Оставил как было.
Максимально уменьшил код (возможно он стал теперь понятнее smile.gif)

Переписанные функции:
ubbc.js : 141 function function ubbCode(code)
Код

function ubbCode(code) {
/*Для эксплорера оставим как было*/
if(ie){
  if (form["Post"].createTextRange && form["Post"].caretPos)
   {
     var caretPos = form["Post"].caretPos;
     caretPos.text = code;
   } else { form["Post"].value += code; }
  }
 /*пошёл нетскейп/мозилла*/
 if(n6) {        
       var post=form["Post"];

/*Тут делим техт из поста на две части 1) до выборки 2) после выборки*/
       var firstPart=post.value.substring(0,post.selectionStart);
var lastPart=post.value.substr(post.selectionEnd);

/*ну и запишем правильный текст обратно в пост*/
       post.value=firstPart+code+lastPart;

      }else{form["Post"].value += code;}
  form["Post"].focus();
}


ubbc.js : 192 function getText()
Код

function getText() {
 /*Для эксплорера оставим как было.*/
        if (ie) {
          return ((form["Post"].createTextRange && form["Post"].caretPos) ? form["Post"].caretPos.text : '');
        }
  /*пошёл нетскейп/мозилла*/
        if(n6) {
        var post=form["Post"];  
         return post.value.substr(post.selectionStart,post.selectionEnd-post.selectionStart);
        }
 /*Тут незнакомый броузер так было раньше для всех, кроме эксплорера*/
        return '';
}


Ещё раз ссылка на тест
http://www.iwi-iuk.org:8081/pr/vingrad/

Это сообщение отредактировал(а) sergej.z - 21.6.2004, 18:25


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Monty
Дата 21.6.2004, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Advanced Lamer
****


Профиль
Группа: Участник Клуба
Сообщений: 3511
Регистрация: 3.4.2003
Где: Гваделупа

Репутация: 1
Всего: 27



Отлично! smile.gif ... надо написать об этом создателям Invision Power Board, чтоб неприменно исправили smile.gif


--------------------
...
О, вещая моя печаль,
О, тихая моя свобода
И неживого небосвода
Всегда смеющийся хрусталь!
PM MAIL ICQ   Вверх
sergejzr
Дата 22.6.2004, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 35
Всего: 360



Ага, сделал...
Посмотрим, как они отреагируют biggrin.gif . Вообще конечно это большое преимущество OpenSource проектов.
_____________________________________
PS:
По моему код можно уже вставлять!


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Wowa
Дата 22.6.2004, 06:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 79
Всего: 290



Цитата
Отлично!  ... надо написать об этом создателям Invision Power Board, чтоб неприменно исправили

В Invision Board, как и в большинстве других форумах вообще нет "быстрой вставки" и многих других функций по-умолчанию.
PM WWW   Вверх
Wowa
Дата 22.6.2004, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 79
Всего: 290



Изменил.
PM WWW   Вверх
Wowa
Дата 22.6.2004, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 79
Всего: 290



PM WWW   Вверх
sergejzr
Дата 22.6.2004, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 35
Всего: 360



Извиняюсь!

Вот правильный код. Не хватало else.
ubbc.js : 141 function function ubbCode(code)
Цитата
function ubbCode(code) {
/*Для эксплорера оставим как было*/
if(ie){
  if (form["Post"].createTextRange && form["Post"].caretPos)
  {
    var caretPos = form["Post"].caretPos;
    caretPos.text = code;
  } else { form["Post"].value += code; }
  }
else  /*пошёл нетскейп/мозилла*/
if(n6) {       
      var post=form["Post"];

/*Тут делим техт из поста на две части 1) до выборки 2) после выборки*/
      var firstPart=post.value.substring(0,post.selectionStart);
var lastPart=post.value.substr(post.selectionEnd);

/*ну и запишем правильный текст обратно в пост*/
      post.value=firstPart+code+lastPart;

      }else{form["Post"].value += code;}
  form["Post"].focus();
}



Знаю, нельзя так делать sad.gif. Просто вчера до меня дошло, что юзеры других броузеров не смогут через кнопки вставлять тэги. Вот и добавил после нетскейпа строчку, а что эксплорер за это два раза одно и тоже вставит не протестил.....

Ещё раз мои извинения!

Это сообщение отредактировал(а) sergej.z - 22.6.2004, 15:57


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Wowa
Дата 22.6.2004, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 79
Всего: 290



Я поставил исправленный код smile.gif
Добавлено @ 20:08
А почему после else в этой строке нет открывающей фигурной скобки?

else /*пошёл нетскейп/мозилла*/
PM WWW   Вверх
sergejzr
Дата 22.6.2004, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 35
Всего: 360



СПАСИБО!

Она не обязательна, но конечно можно поставить.
Я с утра как увидел, что творится первым делом поставил else...


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Wowa
Дата 22.6.2004, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 79
Всего: 290



я так понимаю, что тут else пустой. Просто непонятно мне зачем тут else, если дальше идет if(n6) {
а перд этим if(ie){

Получается if(n6) = TRUE, даже если if(ie) = TRUE?
PM WWW   Вверх
sergejzr
Дата 22.6.2004, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 35
Всего: 360



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

Цитата
если(эксплорер){делай1} // Туда же попадает и опера
если(нетскейп){делай2}


тогда я по запарке изменил так:

Цитата
если(эксплорер){делай1} // Туда же попадает и опера
если(нетскейп){делай2}
    иначе{делай3}


Тут видно, что если будет експлорер он сделает 1, потом 3(Это двойные тэги sad.gif ).

Теперь изменил на:
Цитата
если(эксплорер){делай1} // Туда же попадает и опера
иначе
    если(нетскейп){делай2}
        иначе{делай3}


Конечно можнопоставить скобки:

Цитата
если(эксплорер){делай1} // Туда же попадает и опера
    иначе{
                если(нетскейп){делай2}
                      иначе{делай3}
                }



Это сообщение отредактировал(а) sergej.z - 22.6.2004, 21:02


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Обсуждение форума | Следующая тема »


 




[ Время генерации скрипта: 0.0706 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.