Автор Тема: Ошибки на форуме сюда.  (Прочитано 172999 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн andymc

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 400
  • +1/-0
  • 0
    • Просмотр профиля
Ошибки на форуме сюда.
« Ответ #300 : 16 Января 2007, 00:07:17 »
файл: /vbcode.js
Функция: vbcode()
Строка файла: 106

theform.message.value += "["+vbcode+"]";
arraypush(tags,vbcode);

Эту строку надо заменить на:

!insertTag(theform.message,vbcode) ? arraypush(tags,vbcode) : true ;

Снизу файла /vbcode.js вставить функцию:

function insertTag(field,tag,one) {
codes=\'[\'+tag+\']\'
codee=\'[/\'+tag+\']\'
returned = false
field.focus();
decrement=0
if (!document.all&&!field.selectionStart){
field.selectionStart=1
decrement=1
}
if (field.selectionStart){
var msg = field;
var val = msg.value;
msg.value = val.substring(0, msg.selectionStart-decrement) + codes +
val.substring(msg.selectionStart-decrement, msg.selectionEnd) + codee +
val.substring(msg.selectionEnd, val.length);
return true;
}
if (typeof(document.selection) == \'undefined\') {
field.value = field.value + codes //  + codee;  
returned = false
} else {
var rng = document.selection.createRange( );
if (rng.text) {  
document.selection.createRange().text = codes + rng.text + codee;
returned = true
} else  {  
field.value = field.value + codes //  + codee;
returned = false
}
field.focus();
}
return returned
}

Что было: строка theform.message.value += "["+vbcode+"]"; просто прибавляла код [тег] к значению поля.
Что теперь: Функция insertTag() в отличие от этой строки ПЫТАЕТСЯ найти текст, который выделен, и заключить его в тег.
Если ничего не выделено, то функция действует как прежняя строка
arraypush(tags,vbcode); - тег считается открытым, если функция возвратит true

Резюме: я просто предложил. Ваше дело, попробовать или нет
« Последнее редактирование: 16 Января 2007, 04:15:24 от andymc »

Оффлайн NAS

  • Неопытный юзер
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2951
  • +1/-0
  • 1
    • Просмотр профиля
    • http://nhouse.ru
Ошибки на форуме сюда.
« Ответ #301 : 16 Января 2007, 00:16:16 »
что не так ? не сработало

Оффлайн andymc

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 400
  • +1/-0
  • 0
    • Просмотр профиля
Ошибки на форуме сюда.
« Ответ #302 : 16 Января 2007, 04:14:01 »
Что конкретно? Какой бразуер?

В Мозилла есть проблема: вставляется сразу оба тега в позоцию.
В IE вроде бы всё нормально.

Пытался исправить, пока не получается.

Оффлайн NAS

  • Неопытный юзер
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2951
  • +1/-0
  • 1
    • Просмотр профиля
    • http://nhouse.ru
Ошибки на форуме сюда.
« Ответ #303 : 16 Января 2007, 10:44:50 »
Хм, действительно работает, видимо дома все закешировалось сильно.

Оффлайн andymc

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 400
  • +1/-0
  • 0
    • Просмотр профиля
Ошибки на форуме сюда.
« Ответ #304 : 16 Января 2007, 14:40:46 »
Замечание
Реализация получилась такой сложной, т.к. техника selection разная у обоих браузеров, да ещё в Mozilla есть ошибка небольшая (решается с помощью кода \' decrement=0 if (!document.all&&!field.selectionStart){      field.selectionStart=1;   decrement=1;}) \'

Горячие клавиши
Вообще-то реализация горячих клавиш такая (придумано yandex)
key={
needkey:function(e) {
var code;
if (!e) var e = window.event;
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
if ((code == 13) && (e.ctrlKey == true) && (e.altKey == false)) document.forms.vbform.submit(); // ctrl + enter
if ((code == 66) && (e.ctrlKey == true) && (e.altKey == false)) vbcode(document.forms.vbform,\'B\',\'\'); // ctrl + B
if ((code == 73) && (e.ctrlKey == true) && (e.altKey == false)) vbcode(document.forms.vbform,\'I\',\'\');   // ctrl + I
if ((code == 85) && (e.ctrlKey == true) && (e.altKey == false)) vbcode(document.forms.vbform,\'U\',\'\');   // ctrl + U
}
}
if (document.getElementById) {
document.onkeydown = key.needkey;
}

Вставляется этот код после формы, иначе он её не видит.
Проблема: горячие клавиши например ctrl+b используются также в браузере. И работает это ужасно.
Резюме: делать не рекомендуется. Вышеприведённый код можете записать в копилку полезных решений!

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28