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

Bien. Ya he acotado un poco más el error. Resulta que entra en la función evalScript() y ahí es donde falla (el código es de interpretadorAjax.js). He puesto unos alerts, y os pongo el código y comento el resultado de los alerts a modo de secuencia de ejecución.

En ajax.js
Código:
scs.evalScript();
alert('aki: '+scs+' ----EVAL: '+scs.evalScript()); 
En interpretadorAjax.js
Código:
Array.prototype.evalScript = function(extracted)
{
var s=this.map(function(sr){
alert('dentro');
var sc=(sr.match(new RegExp(tagScript, 'im')) || ['', ''])[1];
alert('SC: '+sc);
if(window.execScript){
alert('window.execScript: '+window.execScript);
alert('window.execScript(sc): '+window.execScript(sc));
window.execScript(sc);
}
else
{
alert('window.setTimeout(sc,0): '+window.setTimeout(sc,0));
window.setTimeout(sc,0);
}
});
return true;
};
Con Firefox siempre entra en el else, con lo cual siempre ejecuta window.setTimeout(sc,0);
Sin embargo, IE accede por el if a window.execScript(sc); y ahí es donde se queja.

Los alerts en IE muestran:

dentro.
SC:
window.execScript(sc): function execScript(sc){[native code]}

y sale el error.

Los alerts en Firefox:
dentro
SC:
window.setTimeout(sc,0): 2
dentro
SC:
window.setTimeout(sc,0): 4
dentro
SC: Nifty("div#box","big");
window.setTimeout(sc,0): 6
dentro
SC: var slider1=new accordion.slider("slider1"); slider1.init("slider");
window.setTimeout(sc,0): 8
dentro
SC:
window.setTimeout(sc,0): 10
dentro
SC:
window.setTimeout(sc,0): 12
dentro
SC: Nifty("div#box","big");
window.setTimeout(sc,0): 14
dentro
SC: var slider1=new accordion.slider("slider1"); slider1.init("slider");
window.setTimeout(sc,0): 16


Ya continuación el alert que hay en ajax.js
aki: <script type="text/javascript" src="js/script_acordeon.js"></script>,<script type="text/javascript" src="js/niftycube.js"></script>,<script>Nifty("div#box","big");</script>,<script type="text/javascript">
var slider1=new accordion.slider("slider1");slider1.init("slider") ;</script>
----EVAL: true


Y se ejecuta correctamente.

¿Podría ser que esa función "window.execScript(sc)" no funcionara? ¿Le véis alguna solución?

Gracias. Un saludo.

Última edición por windzefiro; 26/02/2009 a las 18:18 Razón: Resaltado de codigo