Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/01/2013, 09:09
Avatar de NUCKLEAR
NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 6 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