Windows Script Components  

Exponer eventos personalizados en componentes de secuencia de comandos de comportamiento

Los componentes de secuencia de comandos de comportamiento, como los componentes de secuencia de comandos de automatización, pueden exponer eventos personalizados que se activan dentro del componente de secuencia de comandos y se pueden manejar en el documento contenedor. Los eventos se declaran en el elemento <public> como en el ejemplo siguiente:

<public>
   <event name="onResultChange" />
</public>

A continuación, el evento se puede activar si se llama al método fireEvent en la secuencia de comandos:

<script language="JScript">
   // Otro código.
   fireEvent("onResultChange");
   // Otro código.
</script>

Un componente de secuencia de comandos de comportamiento puede suplantar el comportamiento predeterminado de un elemento; para ello, expone un evento con el mismo nombre que el que ya está definido para el elemento. Por ejemplo, un componente de secuencia de comandos de comportamiento que exponga un evento onclick puede suplantar el evento onclick predeterminado del elemento.

Obtener y establecer la información del evento personalizado

El evento de componente de secuencia de comandos personalizado puede obtener acceso al objeto event de DHTML, que mantiene información específica de eventos. Puede utilizar este objeto para:

En el código del componente de secuencia de comandos, llame al método createEventObject para crear una instancia nueva de un objeto event y establecer una o más propiedades del nuevo objeto event. Cuando se llama al método fireEvent, se puede pasar el nuevo objeto event con el nombre de evento.

Para crear una nueva propiedad expandida, sólo tiene que nombrarla cuando asigne su valor en la secuencia de comandos. A continuación se muestra cómo se puede crear una propiedad nueva denominada miprop del objeto event:

oEvent = createEventObject();
oEvent.miprop = "valor nuevo"
Nota   Sólo puede crear propiedades expandidas si utiliza Microsoft® JScript® (o JavaScript). Microsoft® Visual Basic® Scripting Edition (VBScript) no admite esta característica.

Ejemplo

El fragmento de componente de secuencia de comandos siguiente se deriva de un ejemplo de componente de secuencia de comandos de calculadora. El ejemplo define un evento onResultChange personalizado que se activa en el documento contenedor siempre que cambia el resultado. La información específica de evento (el resultado real del cálculo) se pasa mediante la propiedad expandida denominada result.

Nota   Es necesario incluir una sección CDATA para hacer opaca la secuencia de comandos del elemento <script>. Para obtener más información, consulte Archivos de componentes de secuencia de comandos y compatibilidad XML.
<public>
   <event name="onResultChange" />
</public>

<implements type="Behavior">
   <attach event="onclick" handler="doCalc"/>
</implements>

<script language="JScript">
<![CDATA[
function doCalc()
{ 
   // Código para realizar los cálculos. Los resultados se
   // colocan en la variable sResult.
   oEvent = createEventObject();
   oEvent.result = sResult;
   fireEvent("onResultChange",oEvent);
}
]]>
</script>

A continuación se muestra el aspecto de la página contenedora. Cuando se activa el evento onResultChange, los resultados del cálculo se extraen de la propiedad expandida result del objeto window.event de DHTML y se muestran en el elemento resultWindow <DIV>.

<HTML>
<HEAD>
<xml:namespace prefix="LK" />
<style>
   LK\:CALC {behavior:url(calc.wsc)}
</style>
<script language="JScript">
function showResults(){
   resultWindow.innerText=window.event.result;
}
</script>
</HEAD>

<LK:CALC id="miCalc" onResultChange="showResults()">
<TABLE>
<TR>
   <DIV ID=resultWindow 
      STYLE="border: '.025cm solid gray'" 
      ALIGN=RIGHT>0.</DIV>
</TR>
<TR>
   <TD><INPUT TYPE=BUTTON VALUE=" 0 "></TD>
   <TD><INPUT TYPE=BUTTON VALUE="+/-"></TD>
   <TD><INPUT TYPE=BUTTON VALUE=" . "></TD>
   <TD><INPUT TYPE=BUTTON VALUE=" + "></TD>
   <TD><INPUT TYPE=BUTTON VALUE=" = "></TD>
<TR>
</TABLE>
</LK:CALC>
</HTML>

Consulte también

Exponer propiedades y métodos en componentes de secuencias de comandos de comportamiento

Ayuda de Javascript y Vbscript para Javascripts.astalaweb.com.