O tempo de carregamento das p�ginas web � fundamental para garantir uma boa experi�ncia para o usu�rio, por isso � importante reduzi-lo ao m�ximo. Uma das formas de melhorar esse aspecto � utilizar a t�cnica Lazy Load, que consiste de carregar um conte�do apenas quando ele � realmente requisitado pelo usu�rio. Neste DevCast conversamos com o time de desenvolvimento da DevMedia, que recentemente utilizou essa t�cnica e apresentou nesse v�deo o que foi necess�rio para isso.
Mais sobre jQuery
Consulta r�pida:
$(document).ready(function(){
var loading = false;
$(document).on("scroll",function(){
...
});
});
Assim que o documento fica pronto, declaramos a vari�vel loading que servir� para impedir que sejam feitas multiplas requisi��es;
Em seguida, utilizando a fun��o on da jQuery, aguardamos pelo disparo do evento scroll no documento.
$(document).on("scroll",function(){
if(loading == false){
if(isOnScreen($(".area"))){
...
}
}
});
Ap�s o disparo do evento de scroll no documento, verificamos se a requisi��o j� foi disparada atravez da vari�vel loading, e ent�o � verificado se o elemento com a classe area est� na tela, utilizando para isso a fun��o isOnScreen().
if(isOnScreen($(".area"))){
loading = true;
$.ajax({
...
});
}
Caso o elemento esteja na tela, modificamos o valor da vari�vel loading para true e ent�o � iniciada a requisi��o dos dados atrav�s da fun��o $.ajax().
$.ajax({
url: "conteudo.html",
method: "GET"
}).done(function(res){
$(".area").append(res);
});
Na requesi��o ajax, passamos a URL do conteudo e o m�todo da requisi��o (GET). Em seguida, utilizando o m�todo done, se a requis��o for um sucesso, o resultado � adicionado ao final do elemento com a classe area utilizando o a fun��o append().
function isOnScreen(element){
var win = $(window);
var screenTop = win.scrollTop();
var screenBottom = screenTop + win.height();
var elementTop = element.offset().top;
var elementBottom = elementTop + element.height();
return elementBottom > screenTop && elementTop < screenBottom;
}
A fun��o isOnScreen verifica a posi��o relativa da tela com a posi��o do elemento.
As coordernadas do navegador iniciam no canto superior esquerdo da tela. Ent�o, para verificar se um elemento se encontra vis�vel na tela analisamos se a extremidade inferior do elemento � maior que o topo da p�gin, e se a extremidade superior do elemento � meior que a parte inferior da tela.
Conte�dos sobre Lazy Loading e Ajax
- Lazy Load: Carregue p�ginas rapidamente
- Roda de c�digo Dominando Ajax com jQuery
