En este grupo podemos incluir los siguientes eventos:
- onLoad: este handler funciona en la subida de objetos, en particular
ventanas e imágenes;
- onUnload: es el opuesto del anterior y funciona cuando se
deja una ventana para cargar otra o también para volver a cargar la misma
(con el botón refresh);
- onAbort: funciona cuando el usuario para la subida de un
objeto, bien haciendo clic en otro enlace, bien pulsando la tecla stop
del navegador;
- onError: se activa cuando la subida de un objeto causa un error,
pero sólo si éste se debe a un error de sintaxis del código y no del
navegador, de manera que funciona en un enlace equivocado de una imagen de
la página, pero no en un enlace equivocado de subida de una página entera;
- onBeforeUnload: este handler funciona de la misma manera que onUnload
pero se carga un momento antes;
- onStop: este handler funciona cuando se para la subida de la
página con la tecla stop del navegador y debería funcionar también de la misma
manera que onUnload, cargándose antes que éste, pero después de onBeforeUnload.
Gli ultimi due eventi son particularidades de Internet Explorer 5.0 y
requieren conocimientos adicionales para poder usarlos.
Para las versiones de Javascript, he aquí el cuadro de la situación (en rojo
se indican las modificaciones aportadas en las distintas versiones de
los navegadores):
| Evento |
Versión Javascript
|
NN2.0 |
NN3.0 |
NN4.0 |
NN4.06 |
IE3.0 |
IE4.0 |
IE5.0 |
| onLoad |
1.0 |
*
|
*
|
* |
* |
* |
* |
* |
| onUnload |
1.0 |
* |
*
|
* |
* |
* |
* |
* |
| onAbort |
1.1 |
|
* |
* |
* |
|
* |
* |
| onError |
1.1 |
|
* |
* |
* |
|
* |
* |
| onBeforeUnload |
DHTML |
|
|
|
|
|
|
* |
| onStop |
DHTML |
|
|
|
|
|
|
* |
Marcas sensibiles
Otro límite viene dado por las marcas a las que el evento puede ser asociado:
| Evento |
Marcas
asociadas en Netscape y JScript |
| onLoad |
Este gestor se
usa con las marcas <BODY> e <FRAMESET>
y desde Javascript 1.1 también con <IMG>, mientras en Explorer
hay que agregar también la marca <SCRIPT>, <LINK>,
<EMBED>, <APPLET>. En Javascript 1.2 en Netscape
se agrega también la marca <LAYER>. |
| onUnload |
Este gestor se
usa con las marcas <BODY> y <FRAMESET>
también en Internet Explorer. |
| onAbort |
Este gestor se
usa sólo con la marca <IMG> también en Internet Explorer.
|
| onError |
Este gestor se
usat sólo con la marca <IMG> y con Window, mientras
en Internet Explorer se usa también con <OBJECT> y <STYLE>.
|
| onBeforeUnload |
Este gestor se
usa con las marcas <BODY> también en Internet Explorer.
|
| onStop |
Este gestor se
usa con las marcas <BODY> también en Internet Explorer.
|
onBeforeUnload/onStop/onUnload
Sobre la precedencia de estos eventos Haz clic aquí para
ver un ejemplo
onLoad
Este evento, si se usa bien, puede simular un efecto streaming mediante la
subida de gif o jpeg. Imaginemos que tenemos a nuestra disposición una serie de
jpeg para animar. Con este evento podemos sincronizar la visualización
de las diversas figuras al final de la subida de la anterior mediante un script
del tipo:
<script>
var whichImage=0
var maxImages=5
function changeAnimation(theImage) {
++whichImage
if (whichImage <= maxImages) {
var imageName="!anim" + whichImage + ".gif"
theImage.src=imageName
}
else {
whichImage=-1 return
}
}
</script>
<img name="changengAnimation" src="!anim0.gif" border=0 align="top" onLoad="changeAnimation(this)">
onError
Una mención particular merece el evento onError por su gran utilidad y por
el escaso uso que de él se hace. Este evento puede:
- suprimir los mensajes de error que el debugger mostrara (mensajes discretos
en Netscape, pero enormemente antiestéticos en Explorer) sólo mediante el código
<img src="corrupt.gif" onError="null">
- si el código expresado en la sección HEAD se vuelve activo para toda la
ventana y para todos los eventos de error activados por los objetos allí contenidos
<script>window.onerror=null</script>
un evento onError asociado a una imagen u objeto particular captura
el evento para esta imagen u objeto en perjuicio del general
- el evento puede hacer aún más: puede indicar el tipo de error,
la línea y la URL que lo han causado, e indicarlo en una ventana o memorizarlo
en un array. A continuación, indico un revelador ejemplo mostrado en Reference
de Netscape y que sirve para construir un debugger personalizado. En el script
hay errores y haciendo clic en el primer botón y después en el segundo, se pueden
individuar:
<script>
window.onerror = myOnError
msgArray = new Array()
urlArray = new Array()
lnoArray = new Array()
function myOnError(msg, url, lno) {
msgArray[msgArray.length] = msg
urlArray[urlArray.length] = url
lnoArray[lnoArray.length] = lno
return true
}
function displayErrors() {
win2=window.open('','window2','scrollbars=yes')
win2.document.writeln('<B>Error Report</B> <P>')
for (var i=0; i < msgArray.length; i++) {
win2.document.writeln('<B>Error en file:</B> ' + urlArray[i] + '<BR> ')
win2.document.writeln('<B>Line number:</B> ' + lnoArray[i] + '<BR>')
win2.document.writeln('<B>Message:</B> ' + msgArray[i] + '<P>')
}
win2.document.close()
}
</script> </p>
<form>
<input type="button" value="Este botón tiene un error de sintaxis" onClick="alert('untermenated
string)" name="button">
<p> <input type="button" value="Muestra el error" onClick="displayErrors()"
name="button2">
</form>