События скриптлета

   
На этом шаге мы рассмотрим обработку событий скриптлетом.

   
Приложение со скриптлетом может получать уведомления о его событиях. DHTML-скриптлет генерирует события одного из двух типов:

  • стандартные DHTML-события, включающие onclick и onkeypress;
  • специальные - события, определяемые программистом, а также нестандартные DHTML-события.
    Например, скриптлет способен генерировать событие при изменении свойства.

Обработка стандартных событий

   
DHTML-скриптлет может генерировать любое из следующих стандартных DHTML-событий:

  • onclick;
  • ondblclick;
  • onkeypress;
  • onkeydown;
  • onkeyup;
  • onmousemove;
  • onmousedown;
  • onmouseup.

   
Мы уже говорили, что в число услуг, предоставляемых компонентом Scriptlet Component, входит пересылка в
контейнер сгенерированных скриптлетом событий. Например, пользователь дважды щелкнул мышью в теле скриптлета -
DHTML-событие ondblclick перехватывает компонент Scriptlet Component, который в свою
очередь может передать событие соответствующего типа своему контейнеру. Однако важно понимать, что все это
происходит только в случае, когда эти действия явно предусмотрены в коде скриптлета.

   
Для передачи события из скриптлета в приложение-контейнер надо создать обработчик события соответствующего типа,
вызывающий метод bubbleEvent. Этот метод предоставляется Scriptlet Component и доступен через объект window.external.

   
Вот как в примере из предыдущего шага можно задать обработку двойных щелчков мыши в теле скриптлета:

<BODY ondblclick = passthru()>
.   .   .   .
</BODY>

   
Для пересылки события в контейнер определите функцию passthru():

function passthru() 
{
  if (!window.external.frozen)
    window.external.bubbleEvent(); 
}

   
Обратите внимание, что перед пересылкой события проверяется состояние свойства frozen компонента
Scriptlet Component - это позволяет убедиться в его готовности обработать событие.
Создание и обработка специальных событий

   
Кроме обработки стандартных DHTML-событий, Вы можете заставить скриптлет генерировать специальные
события. Их используют для:

  • более подробного информирования о происшедшем стандартном событии - например, какая из нескольких
    кнопок скриптлета нажата;
  • уведомления приложения о нестандартных изменениях в скриптлете, таких, как изменение свойства;
  • уведомления приложения о нестандартных DHTML-событиях, которые не обрабатываются методом bubble Event.

   
Специальные события генерируются вызовом метода raiseEvent в любом месте кода скриптлета. В следующем примере показано,
как использовать специальное событие для уведомления приложения-контейнера об изменении цвета фона скриптлета.

<SCRIPT LANGUAGE="JavaScript">
function public_put_backgroundColor(value)
{
  window.document.bgColor = value;
  if(!window.external.frozen)
    window.external. raiseEvent("onbgcolorchange",value); 
} 
</SCRIPT>

   
Обратите внимание, что в метод raiseEvent передаются два параметра. Первый указывает на имя события для
предоставления контейнеру стандартного интерфейса. Компонент Scriptlet Component передает все специальные события
через единственное событие onscriptletevent. Имя сгенерированного события хранится в параметре name. Во втором параметре
можно передавать данные, относящиеся к событию.

   
В следующем коде показано, как Internet Explorer обрабатывает событие onbgcolorchange, сгенерированное в предыдущем примере.

<SCRIPT LANGUAGE="JavaScript" FOR="MyScriptlet"
  EVENT="onScriptletevent (event, obj)"> 
  if (event == "onbgcolorchange") 
  {
    msg = "Scriptlet background changed to " + obj;
    alert(msg);
  }
</SCRIPT>

   
На следующем шаге мы рассмотрим пример скриптлета.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий