Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/10/2012, 06:55
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: problema con javascript en pagina cargada por ajax!

Cita:
Iniciado por marlanga Ver Mensaje
Ajax sólo te devuelve texto. Lo que haya en el texto, al javascript le da igual. Es decir, si por ajax estás recogiendo scripts de javascripts, éstos no se ejecutarán.

Para forzar a que se ejecuten, hay una peligrosa función llamada EVAL(), que recibe como único argumento, una cadena de texto. Si dicha cadena es código válido de javascript, se ejecutará. Si no lo es, dará un error.

Asi que tu llamada ajax deverá devolver un JSON comuesto por dos cadenas: La primera cadena contendrá el HTML que pegarás en algún sitio; la segunda cadena contendrá los scripts de javascript que quieres ejecutar. Y sobre esa segunda cadena hacer el EVAL.

Pero el uso del EVAl dicen que es peligroso, y no está recomendado por nadie; asi que lo mejor es meter esos scripts en la página principal, y utilizarlos cuando tu petición AJAX responda.
Código Javascript:
Ver original
  1. function cargarRecursos(){
  2.                     if(!document.getElementById){
  3.                         return;
  4.                         }
  5.                         var i = 0;for(i=0; i<arguments.length; i++){
  6.                             var archivo=arguments[i];var archivoref="";
  7.                             if(cargarObjetos.indexOf(archivo)==-1){
  8.                                 if(archivo.indexOf(".js")!=-1){
  9.                                     archivoref=document.createElement('script');archivoref.setAttribute("type","text/javascript");
  10.                                     archivoref.setAttribute("src", archivo);
  11.                                     }else if(archivo.indexOf(".css")!=-1){
  12.                                         archivoref=document.createElement("link");
  13.                                         archivoref.setAttribute("rel", "stylesheet");
  14.                                         archivoref.setAttribute("type", "text/css");
  15.                                         archivoref.setAttribute("href", archivo);
  16.                                         }
  17.                                         }if(archivoref!=""){
  18.                                             document.getElementsByTagName("head").item(0).appendChild(archivoref);
  19.                                             cargarObjetos+=archivo+" ";
  20.                                             }
  21.                                         }
  22.                                     }

que es la función de mi ejemplo, no requiere el uso de eval, y permitirá cargar dichos recursos en la medida que se necesiten

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.