Quiero verificar cuando alguien intenta actualizar una página.
Por ejemplo, cuando abro una página no sucede nada, pero cuando actualizo la página, debería mostrar una alerta.
javascript
page-refresh
Ahmed
fuente
fuente
window.performance.navigation.type
está en desuso, por favor vea mi respuesta .Respuestas:
⚠️⚠️⚠️
window.performance.navigation.type
está en desuso, por favor vea la respuesta de Илья ЗеленькоUna mejor manera de saber que la página se vuelve a cargar es usar el objeto de navegador compatible con la mayoría de los navegadores modernos.
Utiliza la API de sincronización de navegación .
fuente: https://developer.mozilla.org/en-US/docs/Web/API/Navigation_timing_API
fuente
performance.navigation.type == performance.navigation.TYPE_RELOAD
es más fácil de leer en lugar de== 1
. Además, siperformance.navigation
TYPE_BACK_FORWARD
TYPE_NAVIGATE
window.performance.navigation.type
está en desuso, por favor vea mi respuesta .El primer paso es verificar
sessionStorage
si hay algún valor predefinido y, si existe, alertar al usuario:El segundo paso es establecer
sessionStorage
un valor (por ejemplotrue
):Los valores de la sesión se mantienen hasta que se cierra la página, por lo que funcionará solo si la página se vuelve a cargar en una nueva pestaña con el sitio. También puede mantener el recuento de recarga de la misma manera.
fuente
true
lo tanto, se convierte a"true"
. 2) El almacenamiento de la sesión persiste hasta que el usuario cierra la ventana del navegador, por lo que no puede distinguir la diferencia entre la recarga de la página y la navegación desde y hacia su sitio dentro de la misma sesión del navegador.Nuevo estándar 2018-ahora (PerformanceNavigationTiming)
window.performance.navigation
La propiedad está en desuso en la especificación Nivel de sincronización de navegación 2 Utilice laPerformanceNavigationTiming
interfaz en su lugar.PerformanceNavigationTiming.type
Esta es una tecnología experimental .
Verifique cuidadosamente la tabla de compatibilidad del navegador antes de usar esto en producción.
Apoyo en 2019-07-08
La propiedad de solo lectura de tipo devuelve una cadena que representa el tipo de navegación. El valor debe ser uno de los siguientes:
navegar : la navegación comenzó haciendo clic en un enlace, ingresando la URL en la barra de direcciones del navegador, enviando un formulario o inicializando a través de una operación de script que no sea recargar y retroceder como se detalla a continuación.
reload : la navegación se realiza mediante la operación de recarga del navegador o
location.reload()
.back_forward : la navegación se realiza a través de la operación transversal del historial del navegador.
prerender : la navegación se inicia mediante una sugerencia de prerender .
Esta propiedad es de sólo lectura.
El siguiente ejemplo ilustra el uso de esta propiedad.
fuente
Almacene una cookie la primera vez que alguien visite la página. Al actualizar, verifique si su cookie existe y si es así, alerta.
y en la etiqueta de tu cuerpo:
fuente
Si
devoluciones
0 => el usuario acaba de escribir una URL
1 => la página se volvió a cargar
2 => se hizo clic en el botón Atrás.
fuente
performance.navigation.type
está en desuso, por favor vea mi respuesta .Encontré alguna información aquí Actualización de la página de detección de Javascript . Su primera recomendación es usar campos ocultos, que tienden a almacenarse a través de actualizaciones de página.
fuente
Referer
propiedad y modificar la respuesta del servidor en función de esta propiedad<script>
elemento hacia abajo funcionaría, pero todavía no es una solución garantizada (y tampoco lo es el método de cookies).Referer
tampoco es confiable; muchos servidores proxy y extensiones de navegador lo eliminan de las solicitudes.He escrito esta función para verificar ambos métodos usando viejo
window.performance.navigation
y nuevoperformance.getEntriesByType("navigation")
al mismo tiempo:Descripción del resultado:
0: haciendo clic en un enlace, ingresando la URL en la barra de direcciones del navegador, envío de formulario, haciendo clic en el marcador, inicializando a través de una operación de script.
1: haciendo clic en el botón Recargar o usando
Location.reload()
2: Trabajar con el historial del navegador (Bakc y Forward).
3: actividad previa a la entrega como
<link rel="prerender" href="https://example.com/next-page.html">
4: cualquier otro método.
fuente
Encontré alguna información aquí Actualizar la página de detección de Javascript
fuente
fuente