Re: КАТЕГОРИЧЕСКИ ПРЕДЛАГАЮ!
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 13.05.04 04:52
Оценка: 1 (1) +1
A>
12.05.04 18:05: Перенесено из 'Обсуждение сайта'

тоже кстати — зачем? imho в 'Обсуждение сайта' ему самое место...
КАТЕГОРИЧЕСКИ ПРЕДЛАГАЮ!
От: adontz Грузия http://adontz.wordpress.com/
Дата: 12.05.04 13:53
Оценка: +1
Ввести для тегов форматирования горячие клавиши.
[[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 journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: КАТЕГОРИЧЕСКИ ПРЕДЛАГАЮ!
От: TK Лес кывт.рф
Дата: 13.05.04 07:59
Оценка:
Hello, "Odi$$ey"
>
> A>
>
> тоже кстати — зачем? imho в 'Обсуждение сайта' ему самое место...

Хочешь — верни обратно... возможно нужно было сюда только линк кинуть, но это действий больше .
Posted via RSDN NNTP Server 1.9 alpha
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.