Eventos
Hay algunas etiquetas WML en las que podemos especificar una acción a realizar cuando se produzca un determinado evento, llamado evento intrínseco. En WML tenemos definidos los siguientes eventos intrínsecos:
| Evento | Afecta a la(s) etiqueta(s) | Descripción |
| ontimer | card, template | Este evento se da cuando finaliza un temporizador. Los temporizadores son especificados usando la etiqueta <timer> |
| onenterforward | card, template | Este evento se da cuando el usuario escoge ver una carta vía la tarea go o cualquier otro método que cause un efecto similar. Esto incluye entrar en una carta mediante un script o por un enlace.
Puede especificarse tanto en una carta concreta como en una plantilla. Si hacemos esto último, el evento será aplicado a todas las cartas salvo en aquella(s) en la(s) que se sobreescriba. |
| onenterbackward | card, template | Este evento se da cuando el usuario escoge ver una carta vía la tarea prev o cualquier otro método que cause un efecto similar. Por ejemplo, si usamos un navegador para PC con el que poder interpretar ficheros WML, y este navegador dispone de tecla BACK (estilo la de Netscape o Explorer, por ejemplo), el efecto sería el mismo, se ha producido un onenterbackward. Al igual que el anterior, se puede especificar tanto en una carta como en una plantilla, con las mismas consideraciones en cuanto a sobreescritura. |
| onpick | option | Este evento se da cuando el usuario selecciona o deselecciona un cierto elemento de una lista, por ejemplo. Sobre entrada de datos por el usuario comenzamos a hablar en el siguiente capítulo. |
Sabemos de qué eventos intrínsecos disponemos, pero aún no sabemos qué hacer con ellos; bien, se trata de asignarles una tarea para que esta sea ejecutada cuando se de ese evento. Esta asignación puede hacer de dos formas. La primera de ellas es directa, es decir, dentro de la etiqueta que admite al evento, añadirlo como un parámetro más y, tras un igual, poner entre comillas la URL a la que queremos acceder cuando suceda este evento. Por ejemplo:
<card onterforward="Un_URL"><p>...la carta...</p> </card>
La segunda forma consiste en usar la etiqueta pareada <onevent>. Se trata de una "versión" expandida de la anterior, que permite un mayor control sobre el comportamiento del navegador. Una etiqueta <onevent> debe llevar como parámetro type el tipo de evento que va a tratar (los vistos en la tabla), y dentro de las etiquetas se ha de especificar el tratamiento completo del evento. Aclaremos todos estos conceptos con un ejemplo que dará punto final al capítulo:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="c1" title="c1">
<onevent type="onenterforward">
<go href="#c3"/>
</onevent>
<p>En esta carta se define un evento en
su version expandida, con la etiqueta
<onevent>
<do type="accept" name="delante">
<go href="#c2"/>
</do>
</p>
</card>
<card id="c2" title="c2" onenterbackward="#c2">
<p>Esta carta es posesiva y no nos dejara
avanzar hacia atras en algun caso.
</p>
</card>
<card id="c3" title="c3">
<p>Una tercera carta</p>
</card>
</wml>