Existe uma maneira de detectar quando uma página termina de carregar, ou seja, todo o seu conteúdo, javascript e ativos como css e imagens?
assim como:
if(PAGE HAS FINISHED LOADING)
{
// do something amazing
}
e também, se a página estiver carregando por mais de um minuto, faça algo como:
if(PAGE HAS BEEN LOADING FOR 1 MIN)
{
// do something else amazing
}
Já vi sites como o MobileMe da Apple fazer verificações semelhantes, mas não consegui descobrir em suas enormes bibliotecas de código.
Alguém pode ajudar?
obrigado
EDIT: Isto é essencialmente o que eu quero fazer:
// hide content
$("#hide").hide();
// hide loading
$("#loading").hide();
// fade in loading animation
setTimeout($('#loading').fadeIn(), 200);
jQuery(window).load(function() {
$("#hide").fadeIn();
$("#loading").fadeOut(function() {
$(this).remove();
clearInterval(loadingAnim);
});
setTimeout(function() {
$("#error").fadeIn();
}, 60000);
});
window.onload
(ou$(window).load()
) não funcione?Respostas:
Ou http://jsfiddle.net/tangibleJ/fLLrs/1/
Veja também http://api.jquery.com/load-event/ para uma explicação sobre o jQuery (janela) .load.
Atualizar
Uma explicação detalhada sobre como funciona o carregamento de javascript e os dois eventos DOMContentLoaded e OnLoad pode ser encontrada nesta página .
DOMContentLoaded : quando o DOM está pronto para ser manipulado. A maneira da jQuery de capturar esse evento é com
jQuery(document).ready(function () {});
.OnLoad : quando o DOM está pronto e todos os recursos - incluindo imagens, iframe, fontes, etc. - foram carregados e a roda giratória / classe de horas desaparece. A maneira da jQuery de capturar este evento é a mencionada acima
jQuery(window).load
.fonte
jQuery.load()
foi descontinuado desde jQuery / 1.8 e removido do jQuery / 3. A sintaxe atual éjQuery(window).on("load", function(){/*...*/});
.Existem duas maneiras de fazer isso no jquery, dependendo do que você está procurando.
usando jquery você pode fazer
// isso vai esperar que os ativos de texto sejam carregados antes de chamar isso (o dom .. css .. js)
// isso vai esperar que todas as imagens e ativos de texto terminem de carregar antes de executar
fonte
Isso é chamado de onload. O DOM pronto foi, na verdade, criado pelo motivo exato em que o onload esperou pelas imagens. (Resposta retirada de Matchu em uma pergunta semelhante há algum tempo.)
onload espera por todos os recursos que fazem parte do documento.
Link para uma pergunta onde ele explicou tudo:
Clique em mim, você sabe que quer!
fonte
Eu acho que a maneira mais fácil seria
EDITAR, para ser um pouco louco:
fonte
Outra opção você pode verificar o document.readyState como,
A partir da documentação da página readyState, o resumo do estado completo é
fonte
$(window).on("load" function () {//dostuff})
...?Uma opção é deixar a página em branco, contendo uma pequena quantidade de javascript. Use o script para fazer uma chamada AJAX para obter o conteúdo real da página e fazer com que a função de sucesso escreva o resultado sobre o documento atual. Na função de tempo limite, você pode "fazer outra coisa incrível"
Pseudocódigo aproximado:
fonte
É isso que você tinha em mente?
fonte
Usando jquery: https://learn.jquery.com/using-jquery-core/document-ready/
fonte
Sem jquery ou algo parecido, porque por que não?
fonte
jquery
funciona.DOMContentLoaded
é acionado somente depois que o conteúdo externo é carregado (principalmente imagens, que podem demorar muito em certas condições).jquery
executa.ready()
usando eventos específicos do navegador, que (na maioria dos navegadores) acontecem antes que o conteúdo externo seja carregado.Para sua informação, de pessoas que perguntaram nos comentários, isto é o que eu realmente usei em projetos:
fonte