Eventos
La librería de Cordova incluye una serie de eventos JavaScript a los cuales podemos escuchar para lanzar determinadas acciones cuando se produzcan estos eventos. A continuación se incluye una tabla con la lista de los eventos incluidos por defecto en la librería y las plataformas que los soportan:
Android | Blackberry10 | iOS | WP8 | Windows | |
deviceready | x | x | x | x | x |
pause | x | x | x | x | x |
resume | x | x | x | x | x |
backbutton | x | x | x | ||
menubutton | x | x | |||
searchbutton | x | ||||
startcallbutton | x | ||||
endcallbutton | x | ||||
volumedownbutton | x | x | |||
volumeupbutton | x | x | |||
activated | x |
Además podemos instalar plugins que nos darán acceso a más tipos de eventos. Por ejemplo, si instalamos el plugin para el control de la batería (org.apache.cordova.battery-status
) se añadirán los siguientes eventos (ver sección de plugins):
batterycritical
batterylow
batterystatus
O si instalamos el plugin para obtener información de la red (org.apache.cordova.network-information
) se añadirán los siguientes eventos (ver sección de plugins):
online
offline
Uso de eventos
En general todos los eventos se utilizan de la misma forma: definiendo un listener en JavaScript que se lanzará cada vez que se produzca el evento. Sin embargo, para poder añadir este listener es importante que se haya terminado de cargar tanto el código web como la librería de Cordova, ya que en otro caso no funcionaría.
Por lo tanto, para poder utilizar los eventos primero vamos a ver cómo esperar a que se haya cargado todo lo necesario para poder utilizarlos. Como ya hemos dicho, en primer lugar tendremos que esperar a que haya terminado de cargar la propia web, para esto añadiremos el evento "onload
" a la etiqueta HTML "<body>
", de la forma: <body onload="onLoad()">
. Esto producirá que se llame a la función JavaScript "onLoad
" cuando haya finalizado la carga. Dentro de esta función "onLoad
" tendremos que añadir un listener al evento "deviceready
" para esperar que se haya terminado de cargar la librería de Cordova. El uso de este evento es esencial para cualquier aplicación con Cordova y lo tendremos que utilizar de forma inicial para asegurarnos de que la API se ha cargado completamente. A continuación se incluye un ejemplo de uso:
Al ejecutar el código anterior en primer lugar se llamaría a la función "onLoad
" cuando se termine de cargar la propia Web. Dentro de esta función se define el listener al evento "deviceready
", el cual se lanzará cuando se haya terminado de cargar la librería de Cordova, llamando a la función "onDeviceReady
". Una vez se ha cargado la API de Cordova ya podremos añadir listeners a los eventos que queramos. Para suscribirnos a un evento utilizaremos el siguiente código:
Donde:
nombre-evento
: es el evento al que queremos escuchar, por ejemplo "pause", "resume", etc.funcionCallback
: es la función que se llamará cuando el evento se produzca.false
: el tercer parámetro (llamadouseCapture
) es opcional y recibe un valor booleano. Afecta al orden en el que se lanzará el evento con respecto a su posición en el DOM. Imaginemos que estamos respondiendo al evento click de un elemento que está dentro de otro (que sería su padre) que también está escuchando a este evento. Este atributo nos permite establecer qué evento se lanzará primero, si el del padre y después el del hijo (useCapture=true) o primero el del hijo y después el del padre (useCapture=false). Este último sería el comportamiento por defecto.
Ejemplos de uso de eventos
A continuación vamos a ver cómo tendríamos que utilizar algunos de los principales eventos de Cordova.
Evento pause
Este evento se produce cuando la aplicación pasa a segundo plano. A continuación se incluye un ejemplo completo de uso:
En todos los eventos tendremos que esperar a que la API de Cordova termine de cargar.
Evento resume
Este evento se produce cuando la aplicación estaba en segundo plano y se vuelve a mostrar en primer plano. A continuación se incluye un ejemplo completo de uso:
Evento backbutton
Este evento se produce cuando el usuario pulsa el botón atrás. A continuación se incluye un ejemplo completo de uso:
Salir de la aplicación
Por defecto, al pulsar el botón back no se cerrará la aplicación. Si queremos que se cierre tendremos que hacer:
Hemos de tener cuidado con esta funcionalidad porque cerrará la aplicación siempre que se pulse dicha tecla. Si nuestra aplicación tiene varias páginas y queremos que se use el botón back para volver a la página anterior y además que en la primera página cierre la aplicación tendremos que distinguir entre las páginas y solo cerrar en la primera.
Evento menubutton
Este evento se produce cuando el usuario pulsa el botón menú. Para su utilización, igual que en el resto de casos, simplemente tendremos que hacer (ejemplo abreviado):
Evento volumedownbutton
Este evento se produce cuando el usuario pulsa el botón para bajar el volumen. A continuación se incluye un ejemplo abreviado de uso:
Evento volumeupbutton
Este evento se lanza cuando se pulsa el botón para subir el volumen. Igual que en el resto de casos, para su utilización tenemos que hacer:
Última actualización