Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Jquery bind y load problema.

Estas en el tema de Jquery bind y load problema. en el foro de Jquery en Foros del Web. Buenas compañeros, ando con un problemita que no soy capaz de resolver, tengo lo siguiente. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original jQuery ( window ...
  #1 (permalink)  
Antiguo 17/01/2013, 09:09
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 5 meses
Puntos: 890
Jquery bind y load problema.

Buenas compañeros, ando con un problemita que no soy capaz de resolver, tengo lo siguiente.




Código Javascript:
Ver original
  1. jQuery(window).load(function (){
  2.  
  3.     console.log('1 ' + jQuery.cookie("scrollTop"));
  4.     setTimeout(function() {
  5.         jQuery('body').trigger('resize');
  6.     }, 200);
  7.   if( 'referrer' in document && typeof document.referrer != undefined) {
  8.      var url_parts = document.referrer.split("/");
  9.      var url =  url_parts[0] + "//" + url_parts[2];
  10.  
  11.     if(window.location.href.indexOf(url) == -1)
  12.      {
  13.       jQuery.removeCookie('scrollTop');
  14.      }
  15.     }
  16.  
  17.   if(jQuery.cookie("scrollTop")){
  18.     jQuery('html, body').animate({
  19.       scrollTop: jQuery.cookie("scrollTop")
  20.     });
  21.   }
  22. });
  23.  
  24. jQuery(window).bind('scroll resize', function() {
  25.     var currentSection = null;
  26.  
  27.     jQuery('.section').each(function(){
  28.         var element = jQuery(this).attr('id');
  29.         if(jQuery(window).scrollTop() >= jQuery('#'+element).offset().top - 71)
  30.         {
  31.             currentSection = element;
  32.         }
  33.     });
  34.  
  35.   jQuery.cookie("scrollTop", jQuery(window).scrollTop());
  36.   console.log('2 ' + jQuery.cookie("scrollTop"));
  37. });


Esto hace lo siguiente:


1. cuando hace scroll en la pagina este guarda en la cookie scrollTop la ubicacion de la ventana, lo envia a otra pagina.
2. Cuando se retorna a la misma página, si esta no viene de un referer(Es decir por ejemplo viene de escribir directamente la url) este elimina esa cookie.
3. Cuando vienen de un referer, se supone que debe aplicar esta funcion:


Código Javascript:
Ver original
  1. if(jQuery.cookie("scrollTop")){
  2.     jQuery('html, body').animate({
  3.       scrollTop: jQuery.cookie("scrollTop")
  4.     });
  5.   }


Pero no es asi, ya que primero ejecuta jQuery(window).bind ....
Eso lo veo en los logs que imprime en el orden:


2 0
1 0
2 1....




Entonces mi duda es se supone que debe prevalecer el load antes del bind, pero en mi caso pasa lo contrario... grrr! alguna sugerencia?
__________________
Drupal Argentina
  #2 (permalink)  
Antiguo 17/01/2013, 11:08
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Jquery bind y load problema.

El evento que generas con el setTimeout en la línea 4 puede estar causando ese problema.

Lo demás parece estar bien.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 17/01/2013, 15:44
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 5 meses
Puntos: 890
Respuesta: Jquery bind y load problema.

Bueno aunque supere mi lógica la solución fue colocar el bind que captura el evento resize o scroll dentro del load. Solo así se ejecuta en el orden que debería ejecutarse.

Para el que le interese, el uso es bien simple. http://it-media.com.ar/demos/scroll/index.html

Código Javascript:
Ver original
  1. jQuery(window).load(function () {
  2.         // console.log(jQuery.cookie("scrollTop"));
  3.   setTimeout(function () {
  4.     jQuery('body').trigger('resize');
  5.   }, 200);
  6.  
  7.   if ('referrer' in document && typeof document.referrer != undefined) {
  8.     var url_parts = document.referrer.split("/");
  9.     var url = url_parts[0] + "//" + url_parts[2];
  10.  
  11.     if (window.location.href.indexOf(url) == -1) {
  12.       jQuery.removeCookie('scrollTop');
  13.     }
  14.   }
  15. //console.log('2 ' + jQuery.cookie("scrollTop"));
  16.   if (jQuery.cookie("scrollTop")) {
  17.     jQuery('html, body').animate({
  18.       scrollTop:jQuery.cookie("scrollTop")
  19.     });
  20.   }
  21.  
  22.   jQuery(window).bind('scroll resize', function () {
  23.     jQuery.cookie("scrollTop", jQuery(window).scrollTop());
  24.  
  25.   });
  26.  
  27. });

Saludos.
__________________
Drupal Argentina
  #4 (permalink)  
Antiguo 17/01/2013, 16:04
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Jquery bind y load problema.

Yo en realidad no conseguí reproducir el problema que tuviste. Haciendo pruebas con la página que subiste ahora a mí me funciona igual usando el código como lo tenías al principio.

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.

Última edición por David; 17/01/2013 a las 16:14

Etiquetas: bind, load
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 07:36.