Foros del Web » Programando para Internet » Javascript »

Alternativa a body onload?

Estas en el tema de Alternativa a body onload? en el foro de Javascript en Foros del Web. Me gustaría saber si hay alguna manera de hacer lo mismo que hace la etiqueta <body onload="funcion()">, pero desde el código javascript, es decir, sin ...
  #1 (permalink)  
Antiguo 20/04/2007, 09:07
 
Fecha de Ingreso: abril-2006
Mensajes: 80
Antigüedad: 18 años, 7 meses
Puntos: 2
Alternativa a body onload?

Me gustaría saber si hay alguna manera de hacer lo mismo que hace la etiqueta <body onload="funcion()">, pero desde el código javascript, es decir, sin tener que mezclar html con javascript en un mismo archivo.
  #2 (permalink)  
Antiguo 20/04/2007, 09:31
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 9 meses
Puntos: 772
Re: Alternativa a body onload?

Hola Asyolath

Pon el el head de la página:

window.onload = funcion;

Saludos,
  #3 (permalink)  
Antiguo 20/04/2007, 09:44
 
Fecha de Ingreso: abril-2006
Mensajes: 80
Antigüedad: 18 años, 7 meses
Puntos: 2
Re: Alternativa a body onload?

Gracias Javier, pero el script sigue sin funcionar, solo me funciona con la propiedad onLoad de body o si añado el archivo .js al final del html
  #4 (permalink)  
Antiguo 20/04/2007, 15:20
 
Fecha de Ingreso: abril-2006
Mensajes: 80
Antigüedad: 18 años, 7 meses
Puntos: 2
Re: Alternativa a body onload?

Explicaré mejor mi problema. Tengo un código de javascript metido en el archivo principal.js que sirve principalmente para borrar el texto por defecto de los <textarea> y <input type="text"> cuando el foco se sitúa en ellos, es un código muy sencillo:
Código:
...

function textoDefecto()
{
inputs= document.getElementsByTagName('input');
for(i=0; i<inputs.length; i++)
{
if (inputs[i].type=="text")
{
inputs[i].onfocus= function(){if (this.value==this.title){this.value='';}}
inputs[i].onblur= function(){if (this.value==''){this.value=this.title;}}
}
}

textes= document.getElementsByTagName('textarea');
for(i=0; i<textes.length; i++)
{
textes[i].onfocus= function(){if (this.value==this.title){this.value='';}}
textes[i].onblur= function(){if (this.value==''){this.value=this.title;}}
}
}

window.onload= textoDefecto(); // o addLoadEvent(textoDefecto()); supongo que conocéis la función
El código html:
Código HTML:
<html xmlns="..." xml:lang="en">
<head>
...
<script type="text/javascript" src="principal.js"></script>
</head>
<body>
...
<form>
...
<input type="text" name="titulo" title="Titulo defecto" value="Titulo defecto"/>
...
<textarea name="texto" title="Texto defecto">Texto defecto</textarea>
...
</form>
...
</body>
</html> 
Si hago lo de <body onload="textoDefecto();"> me funciona a la perfección, pero con window.onload no funciona ni tampoco da error. ¿Alguien me puede decir porqué?
  #5 (permalink)  
Antiguo 20/04/2007, 16:07
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 10 meses
Puntos: 13
Re: Alternativa a body onload?

Cuando usas window.onload tienes que colocar el nombre de la función sin los paréntesis, de otra forma la función se ejecutará al momento de ser leída esa línea.

[code]
window.onload = textoDefecto;
[code]

Si necesitas pasar un parámetro debes recurrir a lo siguiente:

Código:
window.onload = function()
{
    textoDefecto(parametro);
}
Si necesitas ejecutar más de una función debes recurrir a lo mismo anterior, de otra forma sólo se ejecutaría laúltima de la lista.

Código:
window.onload = function()
{
    textoDefecto(parametro);
    otraFuncion();
}
__________________
El conocimiento es libre: Movimiento por la Devolución
  #6 (permalink)  
Antiguo 20/04/2007, 17:18
 
Fecha de Ingreso: abril-2006
Mensajes: 80
Antigüedad: 18 años, 7 meses
Puntos: 2
Re: Alternativa a body onload?

Muchas gracias , parece mentira que algo tan sencillo me haya dado tantos dolores de cabeza :D
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 00:36.