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™</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.