Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/02/2009, 18:58
windzefiro
 
Fecha de Ingreso: febrero-2009
Mensajes: 7
Antigüedad: 15 años, 9 meses
Puntos: 0
Pregunta Problema con evalScript() al intentar cargar javascript desde AJAX

Hola. Este es mi primer mensaje en el foro y espero estar haciéndolo de la forma correcta. He estado siguiendo los HOWTO y distintos temas para poder ejecutar javascript de una página llamada desde otra con AJAX.

El caso es que me he encontrado en que al hacer:

Código:
var scs=pagecnx.responseText.extractScript();
document.getElementById(id).innerHTML =pagecnx.responseText;
scs.evalScript();
Firebug me muestra un error en scs.evalScript() que dice "scs undefined". El código utilizado es el mismo que habéis publicado en este foro tantas veces (ajax.js e interpretadorAjax.js).

La página html a la que llamo desde la principal utiliza la librería de NiftyCube (no sé si os sonará) para lograr el redondeado de esquinas y otros efectos para utilizar en DIVs. He puesto un alert también para ver si se ejecuta. Con IE no se ejecuta y da error "Argumento no válido", pero con Firefox llega al alert, firebug se queja del error y no termina de ejecutar la librería de Nifty. En la página principal también la utilizo y no hay ningún problema, pero la de la página llamada no funciona.

Dichos los síntomas, os dejo el código (interpretadorAjax.js no me deja publicarlo por algo de enlaces o direcciones a los "nuevos"... pero vamos, es exactamente el mismo que habéis publicado):

ajax.js
Código:
document.write("<p>Espere mientras carga la página.</p>");

function loadurl(url,id){
	var pagecnx = createXMLHttpRequest();
	pagecnx.onreadystatechange=function(){
		if (pagecnx.readyState == 4 && (pagecnx.status==200 || window.location.href.indexOf("http")==-1))
		var scs=pagecnx.responseText.extractScript();
		document.getElementById(id).innerHTML =pagecnx.responseText;//.stripScript();
		scs.evalScript(); 
			//document.getElementById(id).innerHTML=pagecnx.responseText;
	}
	pagecnx.open('GET',url,true);
	pagecnx.send(null);
}

function loadurlkey(e,url,id){ //Enlace accesible...
	tecla = (document.all) ? e.keyCode : e.which;
	if (tecla==13)
		loadurl(url,id);
}

function createXMLHttpRequest(){
	var xmlHttp=null;
	if (window.ActiveXObject) 
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	else if (window.XMLHttpRequest) 
		xmlHttp = new XMLHttpRequest();
	return xmlHttp;
}
páginal principal "index1.html" (os dejo parte...)
Código HTML:
<link rel="stylesheet" type="text/css" href="css/niftyCorners.css">
<script type="text/javascript" src="js/niftycube.js"></script>
<script type="text/javascript">
window.onload=function(){
Nifty("div#cabecera","transparent");
Nifty("div#anuncios","transparent");
//loadurl('contenido_onload.html','contenido');
}
</script>

<td width="313">
		<p><a href="javascript:loadurl('contenido_enlace.html','contenido')">Enlace_1</a></p>
</td>
<td width="1552">
   <div id="contenido">
	<noscript>JavaScript está desactivado, AJAX no podrá ser usado</noscript>
	<script type="text/javascript" src="js/interpretadorAjax.js"></script>
	<script src="js/ajax.js" type="text/javascript"></script>
   </div>
</td> 
Y la página llamada "contenido_enlace.html" (también en parte...)
Código HTML:
<div id="box">
<script type="text/javascript" src="js/niftycube.js"></script>
<script type="text/javascript">
window.onload=function(){
Nifty("div#box","big");
}
</script>
<script>alert("hola");</script>

<link href="css/niftyCorners.css" rel="stylesheet" type="text/css" />
	<h1>Nifty Corners Cube&trade;</h1>
	<p>One call. Two parameters. Three sizes.</p>
</div> 

¿Sabrían decirme qué puede estar provocando ese error y cómo podría solucionarlo?

Muchas gracias de antemano. Un saludo.

Última edición por windzefiro; 26/02/2009 a las 18:33 Razón: Correción de código