Probé algunas respuestas en SO, pero son antiguas y ya no funcionan, o están bloqueadas por el navegador.
Tengo un inicio de sesión y una página separada de error de inicio de sesión (separada por una buena razón, por favor no diga que sean la misma página).
Si al usuario se le muestra la página de inicio de sesión fallida y pulsa actualizar, me gustaría ir a la página de inicio de sesión, no actualizar la página de inicio de sesión fallida.
Las respuestas existentes son algo como esto:
<script type="module"> function redirect() { window.location.href="/login/"; return true; } window.addEventListener('beforeunload', redirect); </script>No es lo ideal, pero en lugar de recuperar la recarga antes de navegar, captura la recarga al comienzo de la página:
Recargue el código de detección desde: https://stackoverflow.com/a/53307588/5506400
<script type="module"> const pageAccessedByReload = ( (window.performance.navigation && window.performance.navigation.type === 1) || window.performance .getEntriesByType('navigation') .map((nav) => nav.type) .includes('reload') ); if (pageAccessedByReload) { window.location.href="/login/"; } </script>avíseme si esto ayudará o no, use el valor de tipo para verificar la reload
// Use getEntriesByType() to just get the "navigation" events var entries = performance.getEntriesByType('navigation'); for (var i = 0; i < entries.length; i++) { console.log('= Navigation entry[' + i + ']'); var p = entries[i]; // dom Properties console.log( 'DOM content loaded = ' + (p.domContentLoadedEventEnd - p.domContentLoadedEventStart) ); console.log('DOM complete = ' + p.domComplete); // other properties console.log('type = ' + p.type); }