Foros del Web » Programando para Internet » Javascript » Frameworks JS »

traer codigo javascript

Estas en el tema de traer codigo javascript en el foro de Frameworks JS en Foros del Web. Muy buenas a todo el foro, basado en un artículo de Daniel E. Pisano que podéis leer en: www.formatoweb.com.ar/ajax/ejecutar_codigo_javascript_css_cargado_ajax.php he desarrollado una versión reducida que ...
  #1 (permalink)  
Antiguo 24/07/2007, 06:20
 
Fecha de Ingreso: octubre-2006
Mensajes: 30
Antigüedad: 17 años, 6 meses
Puntos: 0
traer codigo javascript

Muy buenas a todo el foro,
basado en un artículo de Daniel E. Pisano que podéis leer en: www.formatoweb.com.ar/ajax/ejecutar_codigo_javascript_css_cargado_ajax.php

he desarrollado una versión reducida que únicamente trae javascript que adjunto al final del mensaje.

Mi intención es que se ejecute en cuanto se reciba en el navegador, y aquí es donde ie tiene problemas, si pongo una función ini() que inicie el script no la reconoce, si la pongo fuera de toda función, la ejecuta la primera vez que carga pero no en las siguientes llamadas ¿?

¿Tenéis idea de qué pueda ocurrir?

Ahí va el código:

function traeCodigo(url){
var req = new conexionAjax();
req.open("POST", url, true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(null);
req.onreadystatechange = function(){cargaCodigo(url,req)};
}
function cargaCodigo(url,req){
if (req.readyState==4){
// Nuevo script.
var etiquetaScript=document.createElement("script");
document.getElementsByTagName("head")[0].appendChild(etiquetaScript);
etiquetaScript.charset = "utf8";
etiquetaScript.type = "text/javascript";
etiquetaScript.src = url;
etiquetaScript.text=req.responseText;
}
}

la llamada la hago simplemente asi:
traeCodigo("cod/bienvenida.js");

después me gustaría hacer un:
ini();

Gracias
  #2 (permalink)  
Antiguo 24/07/2007, 17:30
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: traer codigo javascript

loading..............


Bueno tendrás que hacer una llamada SINCRONA.

Código PHP:
function traeCodigo(url){
var 
req = new conexionAjax();
req.open("POST"urlfalse);
req.setRequestHeader("Content-Type""application/x-www-form-urlencoded");
req.send(null);
var 
etiquetaScript=document.createElement("script");
document.getElementsByTagName("head")[0].appendChild(etiquetaScript);
etiquetaScript.charset "utf8";
etiquetaScript.type "text/javascript";
etiquetaScript.src url;
etiquetaScript.text=req.responseText;
}

de esta forma te funcionará


connection closed.
__________________

Maborak Technologies
  #3 (permalink)  
Antiguo 26/07/2007, 05:21
 
Fecha de Ingreso: octubre-2006
Mensajes: 30
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: traer codigo javascript

Muchísimas gracias MaBoRak, ya funciona correctamente.
No tengo muy claro los concentos de llamada síncrona y asíncrona, ¿cuándo dedidirse por una o por otra?, ¿sabes dónde puedo encontrar literatura al respecto?
Gracias de nuevo.
  #4 (permalink)  
Antiguo 27/07/2007, 18:43
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: traer codigo javascript

loading........



Es fácil de entender.
SINCRONA: Significa que la funcion javascript no seguirá interpretandose hasta que la operacion ajax finalize.

Código PHP:
var algo newajax();
algo.open(algo,algo,false);
algo... //blabla

#Este alert solo se ejecutara cuando todo lo de arriba se haya interpretado y finalizado.
alert(222
ASINCRONA: Significa que la funcion javascript pasará de largo de proceso ajax sin necesidad de esperar a que esté finalizado para seguir interpretandose es por eso que se usa los onreadystatechange osea... en que estado va tu proceso.

Código PHP:
var algo newajax();
algo.open(algo,algo,true);
algo... //blabla

#Este alert se ejecutará sin importar que el proceso ajax haya finalizado .. pasa de largo.
alert(222
Otra definición.

ASINCRONA: le vale un pepino tu proceso ajax y continua el interprete javascript.
SINCRONA: espera a que todo termine para continuar.


connection closed.
__________________

Maborak Technologies
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 11:25.