Ввести для тегов форматирования горячие клавиши.
[[b] - Alt+B
[[url=] - Alt+U
[[list] - Alt+L
[[list=1] - Alt+1
[[ccode] - Alt+C
[[vb] - Alt+V
[[email] - Alt+E
[[q] - Alt+Q
[[i] - Alt+I
[[img] - Alt+G
[[*] - Alt+~
[[list=a] - Alt+2
[[code] - Alt+X
[[sql] - Alt+S
[[msdn] - Alt+4
[[hr] - Alt+-
[[c#] - Alt+Z
[[msil] - Alt+M
[[midl] - Alt+D
[[asm] - Alt+A
[[pascal] - Alt+P
[[java] - Alt+J
[[perl] - Alt+R
[[php] - Alt+H
Из кода ниже должно быть понятно как это сделать. Работает на IE6, на IE5.5 тоже должно работать.
Основной гироморрой это сообщение OnBeforeDeactivate, если найдёте на что заменить, будет работать не только в IE.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
<TITLE>SHORTCUT</TITLE>
<META NAME="GENERATOR" CONTENT="MICROSOFT VISUAL STUDIO .NET 7.1">
<META NAME="VS_TARGETSCHEMA" CONTENT="HTTP://SCHEMAS.MICROSOFT.COM/INTELLISENSE/IE5">
</HEAD>
<SCRIPT>
<!-- функция взята из Forum.js, чтоб было понятнее, варианты для не IE просто стёр, мне они ни к чему -->
function AddTag(t1,t2)
{
if (document.selection)
{
document.forms.NewMsg.msg.focus();
document.forms.NewMsg.msg.setActive();
var txt = document.forms.NewMsg.msg.value;
var str = document.selection.createRange();
if (str.text == "")
{
str.text = t1 + t2;
}
else if (txt.indexOf(str.text) >= 0)
{
str.text = t1 + str.text + t2;
}
else
{
document.forms.NewMsg.msg.value = txt + t1 + t2;
}
str.select();
}
}
<!-- здесь храниться выделение в TextArea до того как этот элемент перестал быть активным -->
var prevSelection;
<!-- сохранили текущее выделение -->
function Msg_OnBeforeDectivate()
{
prevSelection = document.selection.createRange();
}
<!-- иммитация клика -->
function CallAddTagBold()
{
<!-- восстановили фокус, а то он хер знает где -->
document.forms.NewMsg.msg.focus();
<!-- восстановили выделение, а то беспонтово выходит -->
prevSelection.select();
<!-- иммитироали клик. -->
document.all.AddTagBold.click();
}
</SCRIPT>
<BODY>
<FORM ID="NewMsg">
<TEXTAREA ID="msg" ROWS="25" COLS="70" ONBEFOREDEACTIVATE="javascript:Msg_OnBeforeDectivate()">ABC</TEXTAREA>
<BR>
<!-- Это старая ссылка для добавления тега -->
<A ID="AddTagBold" HREF="javascript:AddTag('','')"><B>[b]</B></A>
<!-- а вот здесь задаётся горячая клавиша -->
<LABEL FOR="AddTagBoldKey" ACCESSKEY="B"></LABEL>
<!-- А вот эта ссылочка реагирует на горячую клавишу. Кажись здесь можно использовать что угодно, например DIV -->
<!-- Очень важно задать TABINDEX, а то нечего не будет работать -->
<A ID="AddTagBoldKey" TABINDEX="-1" ONACTIVATE="javascript:CallAddTagBold()"></A>
</FORM>
</BODY>
</HTML>
12.05.04 18:05: Перенесено из 'Обсуждение сайта'
13.05.04 21:39: Перенесено из 'Site Development'
A>12.05.04 18:05: Перенесено из 'Обсуждение сайта'
тоже кстати — зачем? imho в 'Обсуждение сайта' ему самое место...
Hello, "Odi$$ey"
>
> A>
>
> тоже кстати — зачем? imho в 'Обсуждение сайта' ему самое место...
Хочешь — верни обратно... возможно нужно было сюда только линк кинуть, но это действий больше
.
Posted via RSDN NNTP Server 1.9 alpha
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.