Общие > Гостевая Webscript.Ru Network

Ошибки на форуме сюда.

<< < (61/61)

andymc:
файл: /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

Резюме: я просто предложил. Ваше дело, попробовать или нет

NAS:
что не так ? не сработало

andymc:
Что конкретно? Какой бразуер?

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

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

NAS:
Хм, действительно работает, видимо дома все закешировалось сильно.

andymc:
Замечание
Реализация получилась такой сложной, т.к. техника 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 используются также в браузере. И работает это ужасно.
Резюме: делать не рекомендуется. Вышеприведённый код можете записать в копилку полезных решений!

Навигация

[0] Главная страница сообщений

[*] Предыдущая страница

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 
Перейти к полной версии