15/10/2012, 06:55
|
| Colaborador | | Fecha de Ingreso: junio-2007 Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses Puntos: 1567 | |
Respuesta: problema con javascript en pagina cargada por ajax! Cita:
Iniciado por marlanga 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 originalfunction cargarRecursos(){ if(!document.getElementById){ return; } var i = 0;for(i=0; i<arguments.length; i++){ var archivo=arguments[i];var archivoref=""; if(cargarObjetos.indexOf(archivo)==-1){ if(archivo.indexOf(".js")!=-1){ archivoref=document.createElement('script');archivoref.setAttribute("type","text/javascript"); archivoref.setAttribute("src", archivo); }else if(archivo.indexOf(".css")!=-1){ archivoref=document.createElement("link"); archivoref.setAttribute("rel", "stylesheet"); archivoref.setAttribute("type", "text/css"); archivoref.setAttribute("href", archivo); } }if(archivoref!=""){ document.getElementsByTagName("head").item(0).appendChild(archivoref); cargarObjetos+=archivo+" "; } } }
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. |