Alternativas para usar o Meta-Refesh para atualizar uma página
-
27-09-2019 - |
Pergunta
No passado, quando eu cobri os eventos, usei uma meta-refresca com um cronômetro de 5 minutos para atualizar a página para que as pessoas tenham as atualizações mais recentes.
Percebendo que essa pode não ser a maneira perfeita de fazê -lo (nem sempre funciona no IE, interrompe o fluxo de uma pessoa, reinicia as coisas para pessoas com leitores de tela etc.) Estou me perguntando se há outra maneira de lidar com isso situação.
É possível ter algo como verificação de Ajax a cada poucos minutos se o arquivo html no servidor for mais recente e imprimir uma mensagem dizendo "Atualizar as informações disponíveis, clique aqui para atualizar"?
Se isso é loucura, que tal um JavaScript que apenas conta a partir de 5 minutos e apenas sugere uma atualização.
Se alguém pudesse me apontar para tutoriais ou trechos de código, eu apreciaria. Eu apenas toco um programador na TV. :-)
Solução
setInterval(function() {
if (confirm("Its Been 5 Minutes. Would you like to refresh")) {
window.location.reload(true);
//Or instead of refreshing the page you could make an ajax call and determing if a newer page exists. IF one does then reload.
}
}, 300000);
Outras dicas
Na verdade, seu pensamento em um teste de Ajax cronometrado é uma excelente ideia. Não tenho certeza se é exatamente o que o StackOverflow usa, mas verifica periodicamente para ver se outras respostas foram publicadas e mostra o usuário, em um intervalo, se houver atualizações.
Eu acho que isso é ideal por esses motivos:
- É discreto - o leitor pode ignorar facilmente a atualização se não se importar
- Não vai desperdiçar bandwith - sem recarregar, a menos que o usuário escolha
- É informativo - o usuário sabe que há uma atualização e pode optar por agir sobre ela.
Minha opinião sobre como - o script do Ajax envie o ID da postagem mais recente para um script que verifica novos scripts. Este script pode consultar seu banco de dados para ver se existem novas postagens e quantos existem. Pode devolver este número. Se houver novas postagens, mostre alguma mensagem (não modal), incluindo o número de atualizações e deixe o usuário decidir o que fazer a respeito.
Você pode usar o setInterval função em javascript.
Aqui está uma amostra
setInterval("refresh function", milliseconds, lang);
Você o usará, passando um nome para uma função que realmente atualize a página para o primeiro parâmetro e o número de milissegundos entre a atualização para o segundo param (300000 por 5 minutos). O terceiro parâmetro Lang é opcional
Se o usuário interagir com as pontuações e clicar nas coisas, seria um pouco rude apenas atualizar a página nelas. Eu acho que fazer algo como uma notificação de que a página foi atualizada seria ideal.
Eu usaria o jQuery e faria uma chamada AJAX para o arquivo no servidor ou algo que retornará os dados atualizados. Se for mais novo do que vomitar uma mensagem rosada
Sistema de Growl Gritter - JQuery Demonstração do que um rosnado está usando o Gritter
Uma mensagem de rosnado surgiria possivelmente com o que foi alterado, novas pontuações e, em seguida, uma opção dentro dessa mensagem para atualizar e visualizar os novos resultados.