Foros del Web » Programando para Internet » Javascript »

Ejecutar script dentro de un script

Estas en el tema de Ejecutar script dentro de un script en el foro de Javascript en Foros del Web. Hola, Necesito ejecutar un script dentro de un script. Este es el código: Código: <script type="text/javascript"> <!-- Prueba1="<script>alert('dsad');</script>"; Prueba2="<script language='javascript' type='text/javascript' src='http://xxx/prueba.js'></script>"; function SetContainerHTML(id,html,processScripts) { ...
  #1 (permalink)  
Antiguo 08/06/2012, 04:31
 
Fecha de Ingreso: octubre-2003
Mensajes: 364
Antigüedad: 20 años, 6 meses
Puntos: 1
Ejecutar script dentro de un script

Hola,
Necesito ejecutar un script dentro de un script. Este es el código:

Código:
<script type="text/javascript">
<!--
Prueba1="<script>alert('dsad');</script>";

Prueba2="<script language='javascript' type='text/javascript' src='http://xxx/prueba.js'></script>";								


function SetContainerHTML(id,html,processScripts)
{
	mydiv = document.getElementById(id);
	mydiv.innerHTML = html;
	if(processScripts!=false)
	{
	var elementos = mydiv.getElementsByTagName('script');
	for(i=0;i<elementos.length;i++)
	{
		var elemento = elementos[i];
		nuevoScript = document.createElement('script');
		nuevoScript.text = elemento.innerHTML;
		nuevoScript.type = 'text/javascript';
		if(elemento.src!=null && elemento.src.length>0)
		nuevoScript.src = elemento.src;
		elemento.parentNode.replaceChild(nuevoScript,elemento);
		}
	}
}

-->
</script>  
<div id="pepe" onclick="SetContainerHTML('pepe',Prueba1, true)">Click</div>
El problema es que si paso la variable Prueba1 si se ejecuta el script. En cambio si le paso la variable Prueba2 pues no realiza lo contiene el archivo prueba.js (se trata de un alert).

Espero que me podaís ayudar

Saludos!!!!
  #2 (permalink)  
Antiguo 08/06/2012, 05:31
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Ejecutar script dentro de un script

A mi en firefox me funciona con prueba2.js en local

prueba2.js
Código Javascript:
Ver original
  1. alert('dsadPrueba2');

Código HTML:
Ver original
  1. <script type="text/javascript">
  2. <!--
  3. prueba1="<script>alert('dsad');</script>";
  4. prueba2="<script language='javascript' type='text/javascript' src='js/prueba2.js'></script>";
  5. function SetContainerHTML(id,html,processScripts)
  6. {
  7.     mydiv = document.getElementById(id);
  8.     mydiv.innerHTML = html;
  9.     if(processScripts!=false)
  10.     {
  11.     var elementos = mydiv.getElementsByTagName('script');
  12.     for(i=0;i<elementos.length;i++)
  13.     {
  14.         var elemento = elementos[i];
  15.         nuevoScript = document.createElement('script');
  16.         nuevoScript.text = elemento.innerHTML;
  17.         nuevoScript.type = 'text/javascript';
  18.         if(elemento.src!=null && elemento.src.length>0)
  19.         nuevoScript.src = elemento.src;
  20.         elemento.parentNode.replaceChild(nuevoScript,elemento);
  21.         }
  22.     }
  23. }
  24.  
  25. -->
  26. </script>  
  27. <div id="pepe" onclick="SetContainerHTML('pepe',Prueba1, true)">Click</div>

No se que es lo que quieres hacer pero no seria mas simple

prueba2.js
Código Javascript:
Ver original
  1. function prueba2(id){
  2. alert('dsadPrueba2'+id);
  3. }


Código HTML:
Ver original
  1. <script language='javascript' type='text/javascript' src='js/prueba2.js'></script>
  2. <script type="text/javascript">
  3. <!--
  4. function prueba1(id){
  5. alert('dsadPrueba1'+id);
  6. }
  7. -->
  8. </script>  
  9. <div id="pepe" onclick="prueba1(this.id)">Click</div>
  10. <div id="pepe2" onclick="prueba2(this.id)">Click</div>
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 08/06/2012, 05:32
 
Fecha de Ingreso: junio-2012
Ubicación: Alicante
Mensajes: 44
Antigüedad: 11 años, 11 meses
Puntos: 6
Respuesta: Ejecutar script dentro de un script

Lo unico que debes hacer es añadir una linea <script src="tuotrojavascript.js"></script> y despues llamar a la funcion deseada de forma normal, es decir,
Código:
nombrefuncion(argumentos);
.

Esto es porque al añadir un archivo mediante <script> lo que haces es añadir las lineas de ese archivo al codigo html de tu pagina.

No se si me he explicado, ya me cuentas.

Un saludo.

EDITO: justamente quimfv te ha puesto un ejemplo de lo que yo te he explicado. Genial.
__________________
Pincha en Me gustó, ¡gracias! para agradecer.
  #4 (permalink)  
Antiguo 11/06/2012, 01:46
 
Fecha de Ingreso: octubre-2003
Mensajes: 364
Antigüedad: 20 años, 6 meses
Puntos: 1
Respuesta: Ejecutar script dentro de un script

Gracias quimfv!! Pero si prueba.js contiene un document.write no se muestra. La verdad es que sólo funciona si contiene un alert.

La otra solución que me das está genial pero para mi caso no me sirve.

Un saludo
  #5 (permalink)  
Antiguo 11/06/2012, 03:06
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Ejecutar script dentro de un script

En un documento .js referenciado puedes poner cualquier función... si no te funciona es que tienes algun error....

No uses document.write a lo bruto usa document.getElementById("id de donde quieres escribir").innerHTML="texto o html a escribir"


prueba.js
Código Javascript:
Ver original
  1. function prueba2(id){
  2. document.write('dsadPrueba2'+id);
  3. }


Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <title>Documento sin t&iacute;tulo</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  4. <script language='javascript' type='text/javascript' src='js/prueba.js'></script>
  5. <script type="text/javascript">
  6. <!--
  7. function prueba1(id){
  8. alert('dsadPrueba1'+id);
  9. }
  10. -->
  11. </script>  
  12. </head>
  13. <div id="pepe" onclick="prueba1(this.id)">Click</div>
  14. <div id="pepe2" onclick="prueba2(this.id)">Click</div>
  15. </body>
  16. </html>

Funciona pero document.write substituye todo el contenido del documento....

Código Javascript:
Ver original
  1. function prueba2(id){
  2. document.getElementById("sitioparaescribir").innerHTML='dsadPrueba2'+id;
  3. }


Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <title>Documento sin t&iacute;tulo</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  4. <script language='javascript' type='text/javascript' src='js/prueba.js'></script>
  5. <script type="text/javascript">
  6. <!--
  7. function prueba1(id){
  8. alert('dsadPrueba1'+id);
  9. }
  10. -->
  11. </script>  
  12. </head>
  13. <div id="pepe" onclick="prueba1(this.id)">Click</div>
  14. <div id="pepe2" onclick="prueba2(this.id)">Click</div>
  15. <div id="sitioparaescribir"></div>
  16. </body>
  17. </html>
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: Ninguno
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




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