Jump to content
vitorweb

Scroll infinito com Jquery [PROBLEMA]

Recommended Posts

Estou tentando criar uma páginação com scroll infinito com jquery para fazer um determinado evento, quando a barra de rolagem da página chega ao fim.... Mas o evento ocorre quando a barra fica no inicio e nao no final, segue o script...

 

var win = $(window);

win.scroll(function () {
	if ($(document).height() - win.height() == win.scrollTop()) {

    }
});

Grato pela ajuda...

Share this post


Link to post
Share on other sites
function getDocumentHeight() {
	const body = document.body;
	const html = document.documentElement;
	
	return Math.max(
		body.scrollHeight, body.offsetHeight,
		html.clientHeight, html.scrollHeight, html.offsetHeight
	);
};

function getScrollTop() {
	return (window.pageYOffset !== undefined) ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop;
}

// Este valor de medida (300) é a distância antes do final da página que o evento vai carregar
var medida = window.innerHeight + 300;

window.onscroll = function() {
	if (getScrollTop() < getDocumentHeight() - medida) return;

   $.ajax({
   		method: "post",
      url:'http://localhost/seusite/page2.php',
      complete: function (response) {
        $('#article-list').append(response.responseText);
      },
      error: function () {
        alert('Ajax error');
      }
  });
	
};

Se você preferir, e quiser que carregue exatamente no final, basta substituir a variável "medida" por "window.innerHeight" na seguinte linha:

  if (getScrollTop() < getDocumentHeight() - medida) return;

 

Ficando assim:

  if (getScrollTop() < getDocumentHeight() - window.innerHeight) return;

 

 

Espero ter ajudado!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By clickanapolis
      Boa tarde pessoal, desculpa se postei em lugar errado, mais não sei aonde postar essa minha dúvida. Estou finalizando um projeto que consiste em uma plataforma de processo seletivo e na etapa final os candidatos iram fazer uma prova online.
       
      O cliente me perguntou se é possível bloquear o navegador, tipo se ele sair do navegador ou mudar de aba tipo o sistema finalizar a prova do candidato, visto que o sistema irá identificar que ele foi fazer uma pesquisa.
       
      Eu particularmente não vi nada igual ate hj e não sei se existe algo seja em javascript ou qualquer outro modo de fazer isso.
    • By FilipeON
      Olá Sou iniciante em Javascript... Preciso de ajuda para a seguinte questão:
      Tenho duas FUNÇÕES e preciso executa-las de forma aleatória, já tentei de varias formas, mas sem sucesso, alguém pode me ajudar?
      Basicamente o que preciso é que toda vez que a pagina WEB for carregada uma das duas funções seja sorteada e executada.
       
      As funções são:
      function vt1(){fireEvent (document.getElementById('bt-1'), 'click');} function vt2(){fireEvent (document.getElementById('bt-2'), 'click');}
       
    • By Danilo - Jesus voltará!
      Olá, estou fazendo um cálculo de horas para cartão ponto em php e jquery... o cálculo do php já consegui um satisfatório. Preciso agora ao preencher os campos que são gerados dinamicamente de 1 a 31 que são os dias do mês, ao sair do campo Jornada (horas de trabalho), ele envie via ajax os valores preenchidos nesses 4 campos anteriores que são 4 inputs de tempo (time).
      Eu consegui recuperar individualmente, mas ele passa a chamada da função em todos, se dou um alert por exemplo ele percorre todos os campos dinâmicos para aí ir para o outro input, que no caso acontece a mesma coisa, segue o script que utilizei para pegar o valor do input individual, aí preciso que não percorra todos e pegue apenas o valor de cada um no onblur do campo jornada conforme está na figura e me retorne para os campos específicos com os dados que pegarei no php,. Espero ter sido claro, se alguém puder ajudar eu agradeço.
       
      $(document).ready(function() { $(":input").blur(function() { var id = $(this).attr('id'); var value = $(this).val(); alert(id + " " + " " + value); }); }); O que preciso está na figura abaixo:
       

       
      Aguardo, se alguém puder ajudar...agradeço
       
    • By diego alva
      Olá, preciso de uma melhoria em um setup operacional de mercado financeiro em linguagem javascript(Tryd) alguém poderia me ajudar?
      preciso incluir(se for possível) algo parecido com isso (se fechamento da barra for maior que a abertura o centro da barra se mantém da cor já programada, se o o fechamento da barra for menor que a abertura o centro da barra fica preto)
       
      // Parametros de configuracao //
      def len = 65;
      def red = 4
      def orange = 2.5;
      def yellow = 1;
      def white = -0.5;
      // Fim Parametros de configuracao //
      def barras = BARS();
      r = newLines();
      r.add( barras );
      def vol = sharesVolume();
      def mean  = MA(vol,len, 0);
      def std = STDDEV(vol,len);
       
      for (int i=0;i<vol.size();i++) {
          def bar = barras.bar(i);
          int res = -5;
          if (i>len) {
             res =  (int) ( (vol.value(i) - mean.value(i-len)) / ( std.value(i-len )) );
          }  
          
          if (res > red) {
              bar.setFill(255,0,0);
              bar.setBorder(255,0,0);
          }else if (res > orange) {
              bar.setFill(255,128,0);
              bar.setBorder(255,128,0);
          }else if (res > yellow) {
              bar.setFill(250,244,2);
              bar.setBorder(250,244,2);
          }else if (res > white) {
              bar.setFill(255,255,255);
              bar.setBorder(255,255,255);
          }else {
              bar.setFill(0,252,252);
              bar.setBorder(0,252,252);
          }    
      }
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.