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. :-)

Foi útil?

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.

Informações do JQuery Ajax

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top