Quero verificar quando alguém tenta atualizar uma página.
Por exemplo, quando abro uma página, nada acontece, mas quando atualizo a página, ele deve exibir um alerta.
javascript
page-refresh
Ahmed
fonte
fonte
window.performance.navigation.type
está obsoleto, pls veja minha resposta .Respostas:
⚠️⚠️⚠️
window.performance.navigation.type
está obsoleto, pls veja a resposta de Илья ЗеленькоUma maneira melhor de saber que a página é realmente recarregada é usar o objeto de navegador suportado pela maioria dos navegadores modernos.
Ele usa a API de tempo de navegação .
fonte: https://developer.mozilla.org/en-US/docs/Web/API/Navigation_timing_API
fonte
performance.navigation.type == performance.navigation.TYPE_RELOAD
é mais fácil de ler em vez de== 1
. Além disso, se você verificarperformance.navigation
que você vai descobrir que existem 4 tipos de navegação diferente e foi decorado comoTYPE_BACK_FORWARD
,TYPE_NAVIGATE
window.performance.navigation.type
está obsoleto, pls veja minha resposta .O primeiro passo é verificar
sessionStorage
algum valor predefinido e, se existir, alertar o usuário:O segundo passo é definir
sessionStorage
com algum valor (por exemplotrue
):Os valores da sessão são mantidos até que a página seja fechada, para que funcione apenas se a página for recarregada em uma nova guia com o site. Você também pode manter a contagem de recargas da mesma maneira.
fonte
true
é convertido em"true"
. 2) O armazenamento da sessão persiste até que o usuário feche a janela do navegador. Portanto, você não pode dizer a diferença entre recarregar a página e navegar de volta para o site na mesma sessão do navegador.Novo padrão 2018 agora (PerformanceNavigationTiming)
window.performance.navigation
A propriedade foi descontinuada na especificação Nível de tempo de navegação 2 . Por favor, use aPerformanceNavigationTiming
interface.PerformanceNavigationTiming.type
Esta é uma tecnologia experimental .
Verifique a tabela de compatibilidade do navegador com cuidado antes de usá-la na produção.
Suporte em 08/07/2019
A propriedade somente leitura do tipo retorna uma sequência que representa o tipo de navegação. O valor deve ser um dos seguintes:
navegar - Navegação iniciada clicando em um link, inserindo o URL na barra de endereços do navegador, enviando formulário ou inicializando através de uma operação de script diferente de recarregar e voltar_forward, conforme listado abaixo.
recarregar - A navegação é feita através da operação de recarregamento do navegador ou
location.reload()
.back_forward - A navegação é realizada através da operação de travessia do histórico do navegador.
prerender - A navegação é iniciada por uma dica de prerender .
Esta propriedade é somente leitura.
O exemplo a seguir ilustra o uso dessa propriedade.
fonte
Armazene um cookie na primeira vez que alguém visitar a página. Na atualização, verifique se o seu cookie existe e, se existir, alerta.
e na sua etiqueta corporal:
fonte
E se
retorna
0 => usuário digitou uma URL
1 => página recarregada
2 => botão voltar clicado.
fonte
performance.navigation.type
está obsoleto, pls veja minha resposta .Encontrei algumas informações aqui Atualização da página de detecção de Javascript . Sua primeira recomendação é usar campos ocultos, que tendem a ser armazenados por meio de atualizações de página.
fonte
Referer
propriedade e modificar a resposta do servidor com base nessa propriedade<script>
elemento para o final funcionaria - mas ainda não é uma solução garantida (nem o método de cookie).Referer
também não é confiável; muitos proxies e extensões de navegador o retiram das solicitações.Eu escrevi esta função para verificar os dois métodos usando antigos
window.performance.navigation
e novosperformance.getEntriesByType("navigation")
ao mesmo tempo:Descrição do resultado:
0: clicando em um link, Digitando o URL na barra de endereços do navegador, envio de formulário, Clicando em marcador, inicializando através de uma operação de script.
1: Clique no botão Recarregar ou use
Location.reload()
2: Trabalhando com o histórico do navegador (Bakc e Forward).
3: atividade de pré - renderização como
<link rel="prerender" href="https://example.com/next-page.html">
4: qualquer outro método.
fonte
Encontrei algumas informações aqui Javascript Detecting Refresh Page
fonte
fonte