Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/08/2007, 14:05
Computer XTress
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 20 años, 2 meses
Puntos: 2
Re: Evento Doc. Load para IE (via DOM)

SOLUCIONADO:

Hermanos, el señor me ha iluminado con su gracia celestial y he dado con una solución (demos gracias al señor, amen!).

Esto es lo que hice:

Código:
// A
window.onload = cargarFunciones;

// B
loads = new Array();

//c
function manolo() {
	alert("hola");
}

// D
function pirulo() {
	alert("hola 2");
}

// E
loads[0] = "manolo()";
loads[1] = "pirulo()";

// F
function cargarFunciones() {
	for (var i =0; i < loads.length;i++) {
		eval(loads[i]);
	}
}
Explico...

A: window.onload = <funcion>. Donde "funcion" es una función() escrita en algun lado del código. En mi caso no uso directamente window.onload, tengo una funcion que primero intenta usar dom events (con addEventListener) y si eso no funciona, es decir, si el browser no soporta dom events como es el caso del IE, mete window.onload.


B: Tengo un array global donde cada uno de sus registros es un string con la función que quiero ejecutar. Durante el transcurso del armado de mi proyecto voy incluyendo archivos via PHP dependiendo de la sección en la que estoy. En función de estoy voy a necesitar ADHERIR más funciones al document load. Lo que hago simplemente en estos casos es meterle a ese array el nombre() de la funcion.

C: Una función

D: Otra funcion diferente

E: Cargar funciones RECORRE el array loads (que contiene strings con el nombre() de funciones) y usa EVAL para ejecutar cada caso [Gracias dios, gracias por traerme eval()!!!).





Conclusion...

1. Cuando se termine de cargar la web se ejecuta la funcion cargarFunciones(); (Window.load = cargarFunciones;)

2. cargarFunciones() lee y ejecuta el array loads[];

3. En donde a mi se me plasca dentro del código meto dentro de loads[] una nueva funcion... para ayudar al dinamismo podemos usar:

Código:
// Esto mete una funcion en el ultimo record de loads
loads[loads.count+1] = "miFuncion()";

:D

Un saludo!!