![]() |
HOWTO: Ejecutar javascript que viene de ajax loading..................... En vista de que muchos aun se preguntan como interpretar javascript que viene con ajax Cita:
Código PHP: Manos a la obra interpretadorAjax.js Código PHP:
Espero les sirva y es similar al eval de prototype pero yo lo pensé antes... :patada: :serio: http://maborak.com/logo/logo.gif connection closed. |
Re: HOWTO: Ejecutar javascript que viene de ajax Hola, interesante solución con prototype, pero leí como en tres sitios que no era recomendable usar eval para este tipo de procesos... que te dice tu experiencia al respecto....?? Gracias por la solución.. |
Re: HOWTO: Ejecutar javascript que viene de ajax loading............. Es la forma mas sencilla que le veo a interpretar texto plano como javascript... e igual no le veo el peligro.... que de malo tendria hacer un eval? si con un par de extensiones igual puedo inyectar codigo javascript en cualquier página :S connection closed. |
Re: HOWTO: Ejecutar javascript que viene de ajax loading........... Otra forma mas tediosa sería crear tags script por cada script encontrado en extracScript. con algun identificador para evitar doble parseo. connection closed. |
Re: HOWTO: Ejecutar javascript que viene de ajax gracias, una pregunta porque siempre pones loading...........? |
Re: HOWTO: Ejecutar javascript que viene de ajax loading..................... Bueno 7 años atras andaba tras el hacking... y de ahí que siempre firmaba de esa forma porque mis exploits las iniciaba así... para conectar a un target y tambien para finalizarlo..........y se me quedó jeje 8) connection closed. |
Re: HOWTO: Ejecutar javascript que viene de ajax Hola MaBoRak, me gusta más esta manera: Código PHP: |
Re: HOWTO: Ejecutar javascript que viene de ajax loading........... Sip, muy buena, pero hay algo ahi.... si haces la misma peticion como 10 veces, crearas 10 veces los mismos elementos SCRIPT. Mientras que con este eval, simplemente INTERPRETAS y no se queda en memoria el elemento SCRIPT connection closed. |
Re: HOWTO: Ejecutar javascript que viene de ajax Si, es cierto, pero es fácilmente solucionable agregándole a cada script generado un id del tipo 'prefix'+i, y agregando un condicional como este: if(document.getElementById('prefix'+i)), y un removeChild si se cumple el if, no? |
Re: HOWTO: Ejecutar javascript que viene de ajax Entonces quedaría así: Código PHP: |
Re: HOWTO: Ejecutar javascript que viene de ajax Bueno, esta sería la prueba: Código PHP: |
Re: HOWTO: Ejecutar javascript que viene de ajax Aunque lo curioso es que compruebo también que no es necesario el if. En cada llamada a la función se elimina el elemento script anterior, ya que sige apareciendo 2 como resultado: Código PHP: |
Re: HOWTO: Ejecutar javascript que viene de ajax loading............. Ok te lo complico mas :p Tienes 3 procesos AJAX.
como es ajax... se dará el caso de que en la opcion 2 ahora ya no se cargan 7 scripts, sinó 3 y son DISTINTOS a los que registraste con prefix. Otro ejemplo: Tienes un proceso ajax que en su primera ejecucion te crea 3 scripts... en el segundo llamado ejecuta 2 scripts que dependen de los 3 primeros creados..... es como decir, yo dejó aca sctos scripts por si alguien o YO MISMO las vaya a usar adelante. connection closed. |
Re: HOWTO: Ejecutar javascript que viene de ajax Sí, pero la cosa es que no se multilplican en cada consulta, probá el ejemplo que puse, donde comenté el condicional agregado, y vas a ver que en cada consulta el número de tags script no se incrementa sino que permanece constante. Lo que sucede, es que usamos replaceChild sobre el mismo contenedor, luego de modificar su contenido con innerHTML, entonces desaparecen en cada llamada los tags script anteriores. |
Re: HOWTO: Ejecutar javascript que viene de ajax loading............ Ahora el problema no son la cantidad de scripts... sinó el reemplazo que haces de ellas... no tienes control de QUE SCRIPTS REEMPLAZA y cuales no. connection closed. |
Re: HOWTO: Ejecutar javascript que viene de ajax loading............. No se si sea bug pero... he visto que si haces eval() dentro de una funcion, las variables no son globales... sino locales GRR!!!!!!!!!!!!! ya lo solucionaré connection closed. |
Re: HOWTO: Ejecutar javascript que viene de ajax loading.......... SOLUCIONADO: simplemente hay que cambiar eval() por setTimeout(cadenaAevaluar,0); connection closed. |
Re: HOWTO: Ejecutar javascript que viene de ajax Llevo unas horas sin parar intentando borrar unas funciones cargadas por ajax y no se porque removeChild y replaceChild no me funcionan :S. Buscando por internet me he topado con vuestro post y dado que parece que hay conocimientos :) me gustaría saber si sabéis como solucionarlo: Quiero hacer una web en ajax y cada página que pasó a través de ajax carga una serie de funciones y elementos nuevos en javascript y css... pero el problema es que he visto que al menos en Internet Explorer 6, 7 y Firefox las funciones se van acumulando y no borra las anteriores (de otras páginas)... He hecho muchas pruebas y muchos ejemplos, os puedo dejar este que se ve a simple vista: Código PHP: En el ejemplo está todo de forma basta y con 2 funciones separadas, necesitaría saber como borrar completamente las funciones javascript cargadas o reemplazarlas correctamente No se si podréis ayudarme y si va en este post... pero creo que lo que habéis explicado habla justo de lo que estoy preguntando. Muchas gracias! |
Re: HOWTO: Ejecutar javascript que viene de ajax MaBoRak, sólo para dejar redondo el script (que está muy bien y de paso Felicitaciones!!!), cambía sc por tagScript ;) Aquí: Array.prototype.evalScript = function(extracted) { var s=this.map(function(sr){ setTimeout(((sr.match(new RegExp(sc, 'im')) || ['', ''])[1]),0); }); return true; }; |
Re: HOWTO: Ejecutar javascript que viene de ajax Panino5001 o MaBoRaK ¿sabéis como hacer desaparecer lo que he cargado en la función "CargarJava" (supuestamente en ajax) en la segunda función "CargarJava2" para así no acumular funciones..., el tema sería dar a "Cargar Java 2" y que quitase lo cargado en el 1?. He estado buscando otro rato y no veo nada, si no lo sabéis decidlo también para estar menos pendiente ;). Si no me he explicado bien decidmelo. |
Re: HOWTO: Ejecutar javascript que viene de ajax loading.............. Lamentablemente es algo que no podrás hacer así de fácil ya que el contenido de los scripts que cargas .... son muchas variables dificiles de controlar..... algo que me ha funcionado a mi es. eliminar variables innecesarias con delete variable; pero en tu caso.. cuando un TAGSCRIPT las variables que tienes dentro no puedes borrarlas tampoco de con delete, aunque remuevas el tagscript.... entonces algo para solucionar eso sería... Código PHP: La otra forma sería que crees un objeto literal a lo que vayas a hacer. Código PHP: connection closed. |
Re: HOWTO: Ejecutar javascript que viene de ajax Lo primero es darte las gracias por la ayuda. He probado lo que dices, parecía una solución aunque me costase días para adaptar todas las páginas y sus scripts y funciones a objetos pero lo he probado en el ejemplo de arriba con la cuenta atrás y no llega a funcionar bien del todo tampoco me deja destruir loqueCargo por completo... y seria un trabajo de chinos crear objetos con 20 funciones diferentes y que al cambiar a la página siguiente se borren esas 20 funciones y se creen otras tantas y así enlazar todas las páginas de la web, seguro que se irian quedando mucha porquería por el camino. ¿Teniendo en una variable todo lo que se ha añadido en el javascript con ajax porqué no se puede borrar lo mismo que he añadido :S? es una cosa que parece sencilla. No me imagino a un usuario navegando por mi web y cargando cada vez más y más scripts jejeje porque cada página tiene un script diferente, cuentas atrás diferentes (algunas con más de 20 cuentas atrás funcionando a la vez), ... con sólo ver el ejemplo de arriba (copy/paste en editor) veréis el problema que habría sobretodo si se pasa 10 o más veces por la misma página, los contadores en vez de 1 segundo en uno bajarían de en 1 segundo lo equivalente a 10 segundos... y no quiero ni imaginar el cosumo del usuario cada vez mayor. Tiene que haber un sistema más limpio ya que incluso desde 0 seria un trabajo de chinos haciéndolo de esa forma (si fuesen 2 funciones seria perfecto). Muchas gracias de nuevo por la ayuda :) |
Re: HOWTO: Ejecutar javascript que viene de ajax loading........... Si vas a tener funciones que son como dices, cuentas regresivas u otro que al parecer serán "replicas"... entonces orienta tu aplicación a trabajar con CLASSES (objetos) Código PHP: connection closed. |
Re: HOWTO: Ejecutar javascript que viene de ajax Si... parece que tendré que cambiar toda la estructura no sólo de los contadores sino de los muchos elementos que se mueven y que no quiero que se muevan pidiendo a ajax que recargue la página cada segundo. De todas formas sin estudiarlo muy a fondo parece que seguirá siendo un lio usando clases ya que en cada página habrá que cargar la creación de por ejemplo 15 contadores y varios elementos dinámicos y al salir de esa página (una variable enviada) habrá que destruir todos esos objetos y funciones (si se puede) :S Vamos que la mejor solución ahora mismo es cargar toda la página a través de ajax cada segundo xDDD (así los contadores descienden, los elementos se mueven,... y sin cargar javascript nuevo, todo por php), intentaré averiguar en foros ingleses si se puede borrar todo el javascript cargado de forma más o menos sencilla aunque no esté en clases ni objetos :) Si averiguo algo vendré aquí. Muchas gracias |
Re: HOWTO: Ejecutar javascript que viene de ajax Cita:
Lo que no entiendo es que parte de mi html tengo que poner el var scs=myAjax.responseText.extractScript(); //capturamos los scripts myDivUoTroLugar.innerHTML=myAjax.responseText.stri pScript(); //eliminamos los scripts... ya son innecesarios scs.evalScript(); Es lo que no entiendo perdon... Va en Index.html ? o en la pagina que quiero que se cargue en el div del Index? |
Re: HOWTO: Ejecutar javascript que viene de ajax Hola Maborak Muy bueno tu script, muy útil y funciona muy bien en Firefox, pero no hallo manera para que funcione con el IE. Me bota error como si no hubiera conexion (se que es tu script, porque le quito del <head> y todo ok (claro que ya no funcan los scripts), osea que no puede abrir el sitio. saludos, Para ELEKTRON13: Si tienes el javascript que carga tu AJAX en el index.html allí tienes que poner eso, yo por ejemplo lo tengo en un archivo que se llama scripts.js y allí dentro he puesto esa parte: Código PHP: |
Re: HOWTO: Ejecutar javascript que viene de ajax loading............ No funciona en IE? :S ... bueno es raro... otra cosa que no tomé en cuenta es que... estoy quitando todos los tag script con stripScript(); de forma que si tienes algo como <script src="algo.js"></script> Lo quita.. entonces... ya no se incluiría el archivo js, en 421 segundos lo arreglo. connection closed. |
Re: HOWTO: Ejecutar javascript que viene de ajax El problema que me surgio es justamente ese. Mis scripts no estan embebidos. Por lo tanto, si quiero utilizar un framework como mootools este script no me funciona, ya encontraste la solucion? |
Re: HOWTO: Ejecutar javascript que viene de ajax loading......... Asi es: Esta línea Código PHP: Código PHP: connection closed. |
Re: HOWTO: Ejecutar javascript que viene de ajax gente, antes que nada quiero agradecerles muchisimo ya que esta solucion me salvo la vida... :neurotico como forma de agradecimiento, les dejo esta funcion que creé basandome en estos posts, pero con la particularidad de que funcionan en todos los navegadores (encontré problemas con esta funcion en Mozilla)... Les cuento como funciona: tengo una pagina ASP que ejecuta la funcion "getpagina" pasandole como parametro la pagina que quiere recibir y el DIV donde mostrar la info cualquier comentario será bienvenido :-) ajax.js: Código: var tagScript = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';Código: <html>localidad.asp: Código: <html>Espero les sirva! |
Re: HOWTO: Ejecutar javascript que viene de ajax loading........... Excelente :D http://sflogo.sourceforge.net/sflogo...724&type=5 Sería bueno ponerlo en las FAQ connection closed. |
Re: HOWTO: Ejecutar javascript que viene de ajax acabo de descubrir que este codigo no funciona bien en Mozilla!! cuando quiero recuperar los datos en otra pagina a traves de un request.form no reconoce los datos que cargue desde el ajax!!!!! alguien sabe como solucionarlo??? |
Re: HOWTO: Ejecutar javascript que viene de ajax loading............. Puedes poner la URL donde la usas? o bien... especificar mejor el problema. No te entendí. connection closed. |
Re: HOWTO: Ejecutar javascript que viene de ajax Holas! Gracias por este aporte, me he leído todo el tema, e intentado aplicar las soluciones dadas en mi propio script, mas no me han funcionado. La razón, claro, es porque todavía soy novata en el uso de AJAX, así que por eso les pido consejo. Rápidamente les contaré que el script que estoy usando lo heredé de un compañero de trabajo, por lo que sólo copié y usé, pero sin entender mucho, el caso es que funcionó todo bien, hasta que me tocó ver que el código JS inserto en la respuesta Ajax no se ejecutaba. Gracias a ustedes me entero que esto es "normal", y bueno mi caso es que el código Ajax que tengo es algo así: Código HTML: var ajx = Ext.get("miDiv");Desde ya muchísimas gracias ó_ò |
Re: HOWTO: Ejecutar javascript que viene de ajax Hola no entiendo nada me han borrado las dudas que tenia yo aki? no entiendo xk, pero bueno Taluego y MUXAS GRACIAS |
Re: HOWTO: Ejecutar javascript que viene de ajax Hola titogelo, Tus dudas fueron movidas a un tema nuevo: http://www.forosdelweb.com/f77/probl...e-ajax-568812/ Saludos. |
Re: HOWTO: Ejecutar javascript que viene de ajax Hola, yo utilizo el framework de prototype para realizar estas cosas, indicandole la opcion evalScripts: true Funciona perfecto cuando me trae codigo para pegar en el html. El problema esta cuando quiero pegar un script con un src...ejemplo, un gadget de google: Código: <script src="http://gmodules.com/ig/ifr?url=http://www.canbuffi.de/gadgets/clock/clock.xml&up_title=Clock%20%26%20Date&up_time_format=0&up_seconds=1&up_date_format=1&up_dayofweek=1&up_gmtoffset=-3&up_daylight=0&synd=open&w=320&h=120&title=__UP_title__+(GMT__UP_gmtoffset__)&lang=en&country=ALL&border=%23ffffff%7C3px%2C1px+solid+%23999999&output=js"></script>Alguna solucion? Gracias! |
Re: HOWTO: Ejecutar javascript que viene de ajax loading........... Tienes la URL donde estes usando este script? La estas usando como la opcion A o la opcion B ? connection closed. |
Re: HOWTO: Ejecutar javascript que viene de ajax Cita:
Pero el ejemplo es sencillo. La idea es ejecutar script de un src. Solo quiero saber si se puede hacer eso con Prototype y de que forma Gracias. |
Re: HOWTO: Ejecutar javascript que viene de ajax loading........... Leiste la documentación de Prototype? connection closed. |
Re: HOWTO: Ejecutar javascript que viene de ajax Hola a todos. Estoy intentando aplicar estas funciones a mi código, ya que tengo un problema que describo en otro tema en este foro(No pongo el link porque el sistema antispam no me deja). El problema viene a raiz de querer usar shadowbox en paginas cargadas con Ajax. Shadowbox funciona perfectamente en la pagina raiz pero en las paginas cargadas no. He probado a incluir la llamada a shadowbox.init() en la pagina en la que quiero usar shadowbox que cargo por ajax y sigue sin funcionar. Alguna idea? muchas gracias!! |
Respuesta: HOWTO: Ejecutar javascript que viene de ajax Antes, cuando tenía que evaluar código javascript incluído en un responseText, lo hacía de esta manera: Código: <script>Así que me decanté por la opción de las regExp, como la sugerida por MaBoRaK, en la cual se fundamenta toda la idea, pero con algunas diferencias: usando un único prototype para realizar todo el proceso, ya sea para extraer scripts internos y/o externos, e incluyéndos con DOM, en lugar de evaluarlos. El código utilizado para esto es el siguiente: Código: String.prototype.tratarResponseText=function(){Código: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
Respuesta: HOWTO: Ejecutar javascript que viene de ajax Hola, tengo una duda, puede que sea media tonta. Si uso prototype como puede usar tu función. No se si alguien me podria ayudar. |
Respuesta: HOWTO: Ejecutar javascript que viene de ajax Hola ronin, Si usas prototype solo tienes que pasar el parámetro de evalScripts: true, para que los ejecute, no es necesario usar esto. Saludos. |
| La zona horaria es GMT -6. Ahora son las 22:16. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.