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

Hola a todos y todas.
Me gustaría preguntarles acerca de un pequeño problema que tengo cuando añado un archivo javascript dinámicamente y quiero acceder a las funciones de éste después de haberlo cargado.

Voy a escribirlo en un ejemplo.

Tengo el siguiente archivo dinamicos.html:

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2.     <meta charset="utf-8" />
  3.     <title>Scripts dinámicos</title>
  4.     <script type="text/javascript" src="prueba2.js"></script>
  5. </head>
  6.     <p>Probando los scripts dinámicos</p>
  7.     <script type="text/javascript">
  8.         loadScript("funciones.js");
  9.         diHola();
  10.     </script>
  11. </body>
  12. </html>

Tengo también un archivo .js llamado prueba2.js, que carga dinámicamente un elemento <script> que enlaza con un archivo .js externo:

prueba2.js

Código Javascript:
Ver original
  1. function loadScript(url) {
  2.     //url es la url del archivo javascript externo que se quiere cargar
  3.     var script = document.createElement("script");
  4.     script.type = "text/javascript";
  5.     script.src = url;
  6.     document.body.appendChild(script);
  7. }

Y finalmente, tengo un archivo .js llamado funciones.js en el que tengo dos funciones muy simples:

funciones.js
Código Javascript:
Ver original
  1. function diAdios() {
  2.     alert("Adiós");
  3. }
  4.  
  5. function diHola() {
  6.     alert("Hola");
  7. };

La cuestión es que yo quiero cargar el archivo funciones.js de forma dinámica llamando a loadScript("funciones.js") desde el archivo dinamicos.html.
Esto se realiza correctamente, pero cuando quiero utilizar una función del archivo funciones.js desde el archivo dinamicos.html, llamando por ejemplo a diHola(), obtengo el siguiente error: Uncaught ReferenceError: diHola is not defined.

Observando el código fuente de dinamicos.html después de insertar el script dinámicamente se puede ver como sí se ha insertado un nuevo elemento <script> que enlaza al archivo funciones.js.
El problema es que después no puedo utilizar ninguna de las funciones de este archivo .js desde el archivo html.

Si alguien entiendo lo que quiero decir agradecería alguna solución.