HTMLpointHTMLpoint HTMLpoint.com


 Eventos al cargarse los objetos



En este grupo podemos incluir los siguientes eventos:

  1. onLoad: este handler funciona en la subida de objetos, en particular ventanas e imágenes;
  2. 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);
  3. onAbort: funciona cuando el usuario para la subida de un objeto, bien haciendo clic en otro enlace, bien pulsando la tecla stop del navegador;
  4. 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;
  5. onBeforeUnload: este handler funciona de la misma manera que onUnload pero se carga un momento antes;
  6. 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:

  1. 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">
  2. 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
  3. 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>



  Vuelve a principio de página