Me gustaría implementar un código JavaScript que diga esto: si la página se carga por completo, actualice la página inmediatamente, pero solo una vez. Estoy atrapado en el "solo una vez":
window.onload = function () {window.location.reload()}
esto da un bucle sin "sólo una vez". jQuery se carga si esto ayuda.
javascript
jquery
refresh
reload
Martín
fuente
fuente
Respuestas:
Yo diría que use hash, así:
window.onload = function() { if(!window.location.hash) { window.location = window.location + '#loaded'; window.location.reload(); } }
fuente
Cuando encuentro este problema, busco aquí, pero la mayoría de las respuestas intentan modificar la URL existente. Aquí hay otra respuesta que me funciona usando localStorage.
<script type='text/javascript'> (function() { if( window.localStorage ) { if( !localStorage.getItem('firstLoad') ) { localStorage['firstLoad'] = true; window.location.reload(); } else localStorage.removeItem('firstLoad'); } })(); </script>
fuente
<script type="text/javascript"> $(document).ready(function(){ //Check if the current URL contains '#' if(document.URL.indexOf("#")==-1){ // Set the URL to whatever it was plus "#". url = document.URL+"#"; location = "#"; //Reload the page location.reload(true); } }); </script>
Debido a la condición if, la página se recargará solo una vez. También enfrenté este problema y cuando busqué, encontré esta buena solución. Esto funciona bien para mí.
fuente
Verifique este enlace, contiene un código de script java que puede usar para actualizar su página solo una vez
http://www.hotscripts.com/forums/javascript/4460-how-do-i-have-page-automatically-refesh-only-once.html
Hay más de una forma de actualizar su página:
solution1 :
Para actualizar una página una vez cada vez que se abre, utilice:
<head> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Expires" CONTENT="-1"> </head>
solución2:
<script language=" JavaScript" > <!-- function LoadOnce() { window.location.reload(); } //--> </script>
Entonces cambia tu para decir
<Body onLoad=" LoadOnce()" >
solution3:
response.setIntHeader("Refresh", 1);
Pero esta solución actualizará la página más de una vez dependiendo de la hora que especifique
Espero que eso te ayude
fuente
puse esto dentro de mis etiquetas de cabeza de la página en la que quiero una sola recarga:
<?php if(!isset($_GET['mc'])) { echo '<meta http-equiv="refresh" content= "0;URL=?mc=mobile" />'; } ?>
el valor "mc" se puede establecer en lo que desee, pero ambos deben coincidir en las 2 líneas. y "= móvil" puede ser "= cualquier cosa que desee", solo necesita un valor para detener la actualización.
fuente
Finalmente, obtuve una solución para recargar la página una vez después de dos meses de investigación.
Funciona bien en mi proyecto JS del lado del cliente.
Escribí una función que debajo de la página de recarga solo una vez.
1) Primero obteniendo el tiempo de carga del navegador
2) Obtener la marca de tiempo actual
3) Tiempo de carga del navegador + 10 segundos
4) Si el tiempo de carga del navegador es + 10 segundos mayor que la marca de tiempo actual, la página se puede actualizar a través de "reloadPage ();"
Pero si no supera los 10 segundos, significa que la página simplemente se recarga, por lo que no se recargará repetidamente.
5) Por lo tanto, si llama a "reloadPage ();" La función en algún lugar de la página del archivo js solo se volverá a cargar una vez.
Espero que ayude a alguien
// Reload Page Function // function reloadPage() { var currentDocumentTimestamp = new Date(performance.timing.domLoading).getTime(); // Current Time // var now = Date.now(); // Total Process Lenght as Minutes // var tenSec = 10 * 1000; // End Time of Process // var plusTenSec = currentDocumentTimestamp + tenSec; if (now > plusTenSec) { location.reload(); } } // You can call it in somewhere // reloadPage();
fuente
<script> function reloadIt() { if (window.location.href.substr(-2) !== "?r") { window.location = window.location.href + "?r"; } } setTimeout('reloadIt()', 1000)(); </script>
esto funciona perfectamente
fuente
Después de la
</body>
etiqueta:<script type="text/javascript"> if (location.href.indexOf('reload')==-1) { location.href=location.href+'?reload'; } </script>
fuente
Debería utilizar la información GET o POST. OBTENER sería lo más simple. Su JS verificaría la URL, si no se encontrara un determinado parámetro, no solo actualizaría la página, sino que enviaría al usuario a una URL "diferente", que sería la misma URL pero con el parámetro GET en ella. .
Por ejemplo:
http://example.com -> actualizará
http://example.com?refresh=no -> no actualizará
Si no desea la URL desordenada, entonces incluiría algo de PHP justo al principio del cuerpo que refleja un valor oculto que esencialmente dice si el parámetro POST necesario para no actualizar la página se incluyó en la solicitud de página inicial. Inmediatamente después de eso, incluiría algo de JS para verificar ese valor y actualizar la página CON esa información POST si es necesario.
fuente
Prueba con esto
var element = document.getElementById('position'); element.scrollIntoView(true);`
fuente
Intente con el siguiente código
var windowWidth = $(window).width(); $(window).resize(function() { if(windowWidth != $(window).width()){ location.reload(); return; } });
fuente
var foo = true; if (foo){ window.location.reload(true); foo = false; }
fuente
utilizar esta
<body onload = "if (location.search.length < 1){window.location.reload()}">
fuente
use window.localStorage ... así
var refresh = $window.localStorage.getItem('refresh'); console.log(refresh); if (refresh===null){ window.location.reload(); $window.localStorage.setItem('refresh', "1"); }
Es trabajo para mi
fuente
Aquí hay otra solución con setTimeout, no perfecta, pero funciona:
Requiere un parámetro en la URL actual, así que solo imagina que la URL actual se ve así:
www.google.com?time=1
El siguiente código hace que la página se recargue solo una vez:
// Reload Page Function // // get the time parameter // let parameter = new URLSearchParams(window.location.search); let time = parameter.get("time"); console.log(time)//1 let timeId; if (time == 1) { // reload the page after 0 ms // timeId = setTimeout(() => { window.location.reload();// }, 0); // change the time parameter to 0 // let currentUrl = new URL(window.location.href); let param = new URLSearchParams(currentUrl.search); param.set("time", 0); // replace the time parameter in url to 0; now it is 0 not 1 // window.history.replaceState({}, "", `${currentUrl.pathname}?${param}`); // cancel the setTimeout function after 0 ms // let currentTime = Date.now(); if (Date.now() - currentTime > 0) { clearTimeout(timeId); } }
La respuesta aceptada utiliza la menor cantidad de código y es fácil de entender. Acabo de proporcionar otra solución a esto.
Espero que esto ayude a otros.
fuente
Use rel = "external" como el siguiente es el ejemplo
<li><a href="index.html" rel="external" data-theme="c">Home</a></li>
fuente