Foros del Web » Programando para Internet » Javascript »

ejecutar secuencialmente el script

Estas en el tema de ejecutar secuencialmente el script en el foro de Javascript en Foros del Web. Lo primero saludaros a todos ya que acabo de registrarme en este foro y daros las gracias por todo lo que hasta ahora me habéis ...
  #1 (permalink)  
Antiguo 14/06/2012, 03:11
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 11 años, 10 meses
Puntos: 47
Pregunta ejecutar secuencialmente el script

Lo primero saludaros a todos ya que acabo de registrarme en este foro y daros las gracias por todo lo que hasta ahora me habéis ayudado, ya aunque soy nuevo aquí, muchas veces me llevaban mis busquedas a encontrar la solución en vuestra comunidad.

Por otro lado decir que soy nuevo en el diseño web, estoy empezando con ello de freelance, y no tengo a quién recurrir en caso de duda, por lo que os ha tocado ;)

Dicho esto voy a hacer una pregunta con la que me temo que vais a pensar que no he buscado lo suficiente, pero de verdad, llevo con este problema muchos meses, buscado soluciones "chapuzas" y sin encontrar "LA SOLUCIÓN" que seguro estoy de que debe de haber.

Es tan simple como lo siguiente.

Un código como éste:

Código:
    $('a').click(function(event) {
                   event.preventDefault();

                   if($('body').attr('id')=="home"){
                                    $('#dial').animate({ backgroundPosition: posicionar_dial$ },500,function(){   // mueve el fondo de un objeto a la posición de una variable.
                                                                                                               
                                                        $('#ficha_intro').ordenarHome();});    // ejecuta la función ordenarHome() que he creado.
                                   
                                      window.location = direccion_location$;       //realiza el window.location a la variable direccion_location$
    };

     });
   
};
La cuestión es que la función ordenar_home() realiza varios cambios en la página y lo único que quiero es que el window.location se ejecute solo cuando esa función, y todos los cambios que realiza, hayan terminado.

Hasta ahora en este problema me he podido apañar con callbacks; poniendo delay() antes de los métodos (aquí no sé cómo ponerselo); he visto por ahí lo de queue() pero que no consigo hacerlo funcionar.

¿me podríais decir, o enviarme un link donde lo expliquen, sobre cuál es esa manera simple, fácil y lógica que seguro debe de existir y que no soy capaz de encontrar, ?


Mucísimas gracias de antemano, y disculpad mis posibles errores al expresarme ya que soy novato en esto de la programación y todavía no me conozco los términos técnicos.

Saludos
  #2 (permalink)  
Antiguo 14/06/2012, 03:37
Avatar de YYs86  
Fecha de Ingreso: abril-2012
Ubicación: Salamanca
Mensajes: 136
Antigüedad: 12 años
Puntos: 14
Respuesta: ejecutar secuencialmente el script

¿Has probado a hacer?:

Código Javascript:
Ver original
  1. $('#ficha_intro').ordenarHome(function(){
  2.  
  3. window.location = direccion_location$;
  4.  
  5. });
__________________
Web developer:

http://xtremgaming.es
http://leaderleague.com
  #3 (permalink)  
Antiguo 14/06/2012, 04:34
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 11 años, 10 meses
Puntos: 47
Respuesta: ejecutar secuencialmente el script

Hola, muchas gracias por tu rápida respuesta.

Mira, lo he probado y no va. no me ejecuta el window.location.

luego he probado a cambiar el window.location por un alert() y tampoco me lo ejecuta.

Algo así estuve intentando ayer, pero pensé que para que mi función ordenarHome() admitiera un callback debía de hacerle algo. Estuve buscando al respecto, encontré algo en inglés pero no me funciono.


:(
  #4 (permalink)  
Antiguo 14/06/2012, 05:11
Avatar de YYs86  
Fecha de Ingreso: abril-2012
Ubicación: Salamanca
Mensajes: 136
Antigüedad: 12 años
Puntos: 14
Respuesta: ejecutar secuencialmente el script

Mmmm igual me he colao yo:

Código Javascript:
Ver original
  1. $('#ficha_intro').ordenarHome(e,function(){
  2.  
  3. window.location = direccion_location$;
  4.  
  5. });

http://www.desarrolloweb.com/articul...es-jquery.html
__________________
Web developer:

http://xtremgaming.es
http://leaderleague.com
  #5 (permalink)  
Antiguo 14/06/2012, 06:20
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 11 años, 10 meses
Puntos: 47
Respuesta: ejecutar secuencialmente el script

He probado lo que dices y no me funciona. Así ya directamente no me ejecuta la función ordenarHome.

¿qué significa la "e" que has puesto?

Entiendo que querías poner una variable a modo de valor. El caso que supongo que como no está declarada ni existe, pues por eso no me ejecuta la función.
basandome en lo que has puesto he cambiado la e por dos comillas vacías '' pero así si me ejecuta la función pero no el supesto callback que le hemos puesto, o sea el window.location.


¿no tendría que hacer algo a mi función para que admitiera un callback?

¿no habría manera de indicar que el window.location se ejecutara pasado un tiempo X que yo le diera? por ejemplo con delay lo he hecho en alguna ocasión pero al window.location no sé dónde ponérselo. por ejemplo delay(10000).window.location='mi_pagina.html' no me funciona.

Bueno, yo mientras sigo dándole vueltas e investigando por aquí.

Muchas gracias por tu ayuda.
  #6 (permalink)  
Antiguo 14/06/2012, 08:49
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: ejecutar secuencialmente el script

Tenés que hacerlo asi
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
  7. </head>
  8. <body id="home">
  9. <p><a href="#">Link</a></p>
  10. <div id="dial" style="width: 300px; height: 300px; background-color: cyan;"></div>
  11. <script type="text/javascript">
  12. //<![CDATA[
  13.  
  14. $('a').click(function() {
  15. if($('body').attr('id')=="home"){
  16.  
  17. $('#dial').animate({
  18. opacity: 0.25,
  19. left: '+=50',
  20. height: 'toggle'
  21. }, 3000, function() {
  22. // a ejecutar cuando termina la animación
  23. var direccion_location = "http://google.com";
  24. ordenarHome(direccion_location);
  25. });
  26.  
  27. }else{
  28. alert('El id no es home');
  29. }
  30.  
  31. });  
  32.  
  33.  
  34. function ordenarHome(u){
  35. window.location.href = u
  36. }
  37.  
  38. //]]>
  39. </body>
  40. </html>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 14/06/2012, 11:55
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 11 años, 10 meses
Puntos: 47
Respuesta: ejecutar secuencialmente el script

Hola de nuevo. Emprear, no era exactamente eso lo que necesitaba, veo que lo que has hecho es aprovechar el Callback del la primera animación para meter en cola una función con el "window.location" dentro.

El problema es que dentro de esa función tengo muchas más cosas. Pero gracias a lo que me has puesto me has dado la idea de cómo hacerlo, que prácticamente es lo que tú me has puesto pero las diferencias obvias por no ser exactamente el mismo código que tenía que el que os he dado.

Bueno, en este caso lo he solucionado, pero seguiré investigando a ver otras posibles soluciones. Ya que en este caso he podido aprovechar el callback de una animación (otra que tenia dentro mi función), pero me preocupa que el día que no tenga esta opción, no voy a saber cómo solucionarlo.

Muchísimas gracias a los dos por vuestra ayuda. No sabéis el peso que me quito de encima con esto.

P.D: Bueno voy a buscar por ahí también la diferencia entre window.location.href que tú has puesto y el window.location que yo conocía :)
  #8 (permalink)  
Antiguo 14/06/2012, 12:09
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: ejecutar secuencialmente el script

Bueno, la idea era esa, de darte una referencia para que veas como llamar una función después de la animación, el resto dependerá de lo compleja de tu función.
el objeto location tiene una propiedad madre que es href(la url completa), pero podrías desglosar la misma con otras propiedades
protocol
host
hostname
port
pathname
search
hash
En la práctica es lo mismo

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #9 (permalink)  
Antiguo 14/06/2012, 15:34
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 11 años, 10 meses
Puntos: 47
Respuesta: ejecutar secuencialmente el script

ok, gracias de nuevo, le echare un ojo. :)

Etiquetas: jquery
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:10.