Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/12/2012, 12:30
eduardobpe
 
Fecha de Ingreso: mayo-2012
Ubicación: La Rioja (España)
Mensajes: 13
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Funciones en archivo JavaScript añadido dinámicamente

Gracias por tu ayuda @emprear.
Efectivamente su solución de utilizar windows.onload funciona correctamente, y el script que escribió después también es muy útil para cargar dinámicamente varios archivos javascript y css al mismo tiempo.

El problema que le veo a utilizar window.onload es que, si por ejemplo mi archivo javascript añadido dinámicamente tiene 50 funciones, y quiero llamar a 15 desde mi documento html, tengo que hacer lo siguiente:

Código Javascript:
Ver original
  1. window.onload = function() {
  2. //llamada a función 1
  3. //llamada a función 2
  4. //llamada a función 3
  5. //...
  6. //llamada a función 15
  7. }

Lo que me gustaría es que, una vez cargado dinámicamente el archivo con la llamada a mi función "loadScript("funciones.js");", tendría disponibles todas las funciones de este archivo sin esperar a que se produjera el evento load de la página entera, ya que eso puede tardar bastante en algunos casos.
No sé si se puede utilizar o disparar algún otro evento para tener disponible todo el código del archivo javascript cargado dinámicamente antes de que se carguen todos los elementos de la página.

Lo que he sacado como conclusión, por si a alguien más le interesa profundizar en este tema, es lo que voy a explicar siguiendo el ejemplo que puse en mi primer post:

Si en mi documento html pongo lo siguiente:

Código HTML:
Ver original
  1. <script type="text/javascript">
  2.         loadScript("funciones.js");
  3.         diHola();
La llamada a loadScript("funciones.js"); carga dinámicamente el archivo funciones.js y añade el siguiente código al final de <body> en el documento html:

Código HTML:
Ver original
  1. <script text="text/javascript" src="funciones.js"></script>
Aunque se haya añadido lo anterior al código fuente de la página, realmente no se han cargado las funciones que pudiera tener el archivo "funciones.js", por lo que si inmediatamente después de cargar éste, quiero hacer una llamada a algunas de sus funciones, como por ejemplo a "diHola()", obtendrá un error diciendo que diHola no existe.
Mi teoría es que, el código existente en el archivo añadido dinámicamente llamado funciones.js no ha sido cargado todavía. Es como si habría que esperar un rato a que el navegador completara este proceso.
Esto se puede comprobar si en vuestro documento html poneis lo siguiente:

Código HTML:
Ver original
  1. <script type="text/javascript">
  2.         loadScript("prueba.js");
  3.         setTimeout("diHola()", 1000);

En este último caso, espero 1 segundo para ejecutar la función "diHola()" que se encuentra en el archivo funciones.js que añadí dinámicamente antes.

La cuestión es que, lo que yo hubiera esperado que se pudiera hacer al añadir dinámicamente el archivo javascript "funciones.js", es utilizar todas las funciones en él contenidas inmediatamente, sin utilizar "window.onload".