Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Então, alguém poderia me indicar algo para que eu possa dar uma pesquisada de como realizar tal coisa?
Nada mais é que uma barra de progresso (antes/durante o redirecionado) "não sei como funciona".
Exemplo disso é websites como youtub, github entre outros, que ao acessar um link mostra um processo antes de fato o browser se redirecionar.
Nota!: Não é um ajax com barra de progresso.
Na verdade a única forma que consigo imaginar em fazer é:
- Adicionar um evento click em cada elemento de TAG <A>
- Capturar seu valor HREF
- Executar um ajax nos dados do href, assim sendo consigo monitorar o processo por causa do ajax.
- Pós conclusão dos dados computados do ajax, usar um location.href para o local.
Obs.: Já até fiz dessa forma e funciona, **mas porém**....
Acho meio "anti-prático", porque nesse caso o browser do usuário deve carregar o mesmo conteúdo duas vezes, uma durante o ajax depois novamente quando redirecionar. Além do mais, como nos sites que citei que usam esse tipo de aplicação, visivelmente não funciona dessa forma.Sim, eu pensei em uma alternativa similar.
Exemplo:
<a href="arquivo_qualquer.php?valor="outro_arquivo" />
Então ao clicar no link vai para o arquivo_qualquer e lá executo ao ajax com a informação recebida. Assim monitorando o XMLHttpRequest.
Agora ao fato que pensei se fazer tudo antes, digamos então.
Tenho uma pagina qualquer que faz consultas em um banco de dados, logo a mesma executa querys, ao carrega-la com ajax, e novamente as querys serão executadas se redirecionar para ela. Então essa alternativa que disse no primeiro post se torna totalmente inviável.
Mas queria realmente saber como é feita essa aplicação, para criar um script padrão da melhor forma possível.
Omar, eu olhei o site do Youtube e parece que a barra de progresso só é acionada depois do redirecionamento, parece que o processo é feito na página posterior, para indicar que ainda está carregando.