2010-09-26 10 views
9

¿Hay alguna manera de averiguar el final de la página utilizando Jquery, de modo que se pueda mostrar un mensaje simple diciendo que ha llegado al final de la página.Alerta utilizando Jquery cuando Desplácese hasta el final de la página

+0

posible duplicado de [Determinando cuando se desplaza al final de una página con Javascript] (http://stackoverflow.com/questions/2817042/determining-when-scrolled-to-bottom-of-a-page-with-javascript) –

Respuesta

18

How to tell when you're at the bottom of a page:

if ( document.documentElement.clientHeight + 
     $(document).scrollTop() >= document.body.offsetHeight) 
{ 
    // Display alert or whatever you want to do when you're 
    // at the bottom of the page. 
    alert("You're at the bottom of the page."); 
} 

Por supuesto que quiera disparar lo anterior cada vez que el usuario se desplaza:

$(window).scroll(function() { 
    if ( document.documentElement.clientHeight + 
      $(document).scrollTop() >= document.body.offsetHeight) 
    { 
     // Display alert or whatever you want to do when you're 
     // at the bottom of the page. 
     alert("You're at the bottom of the page."); 
    } 
}); 

Here is a jsFiddle example que se desvanece en un "ya está! . Desplazarse al comienzo de la página de enlaces" cuando el usuario se haya desplazado hasta la parte inferior de la página

Referencias:

+1

Esto no funciona para mí. Recomiendo la respuesta aceptada a esta pregunta SO: http://stackoverflow.com/questions/3898130/how-to-check-if-a-user-has-scrolled-to-the-bottom –

+0

@Ryan - ¿El jsFiddle no funciona para usted? ¿Qué navegador estás usando? –

0

podría necesitar ajustar para dar cuenta de los navegadores, pero algo como esto debería hacer:

$(document).scroll(function() 
{ 
    var $body = $('body'); 
    if (($body.get(0).scrollHeight - $body.scrollTop) == $body.height()) 
    { 
     // display your message 
    } 
}); 
6

Esto funcionará y probado en IE 7,8,9, FF 3.6, Chrome 6 y Opera 10.6

$(window).scroll(function() 
{ 
    if (document.body.scrollHeight - $(this).scrollTop() <= $(this).height()) 
    { 
     alert('end'); 
    } 
}); 
2

Si las soluciones anteriores no funcionan por favor, compruebe si ha configurado el tipo de documento derecha:

<!DOCTYPE HTML> 

Me tomó una hora para averiguar :)

1

Para evitar duplicados console.log('end of page'), es necesario crear un setTimeout, así:

var doc = $(document), w = $(window), timer; 

doc.on('scroll', function(){ 

    if(doc.scrollTop() + w.height() >= doc.height()){ 

     if(typeof timer !== 'undefined') clearTimeout(timer); 

     timer = setTimeout(function(){ 
      console.log('end of page'); 
     }, 50); 

    } 

}); 
+0

Alternativamente, podría eliminar el detector de eventos después de la primera ejecución exitosa (console.log) –

0

Nota para la depuración: recibí la alerta al regresar a la parte superior de la página (?) usando jquery-1.10.2.js. Cargado jquery-1.6.4.min.js y todo está bien.

Cuestiones relacionadas