Actualización de la página una vez después de cargar la primera página


84

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.


1
¿Qué está logrando al volver a cargar la página? Puede haber una mejor manera de resolver el problema.
FishBasketGordo

hay un script de galería de pantalla completa de jquery que comienza en la página, pero los pulgares nunca se cargan por completo. si presiona el botón "actualizar" de la página, se cargarán las restantes ... así que está claro que estoy buscando algún tipo de solución ... dar los pulgares por separado es demasiado complicado (CMS), otras correcciones de errores no Realmente ayuda ... Son 4 MB de imágenes, aprox. 300kb cada uno, en algún momento los pulgares de las imágenes ya no se redimensionan ni se muestran (¿tiempo de espera? ¿Demasiado, demasiado grande?) Pero la página termina de cargarse.
Martin

He experimentado un problema similar (los javascripts no funcionan) al usar pjax pjax.heroku.com .
Pratik Khadloya

Respuestas:


97

Yo diría que use hash, así:

window.onload = function() {
    if(!window.location.hash) {
        window.location = window.location + '#loaded';
        window.location.reload();
    }
}

Sí. Solo iba a sugerir eso.
p3drosola

sí, similar a mi sugerencia de usar un parámetro $ _GET, pero un poco más fácil ya que acceder al hash en JS es más fácil que acceder al parámetro $ _GET ...
maxedison

4
Este es el más simple siempre que no haya hash en las URL. En cuyo caso, sería mejor leer un parámetro GET.
David

¿Cómo puede hacer esto sin agregar la URL?
zero_cool

solución inteligente! ¡quiéralo! ❤
anu

48

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>

Solución creativa.
JoJo

@Haimei Thx mucho __ / \ __
Pradeep kumar

30
<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í.


9

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


3

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.


3

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();

3
<script>

function reloadIt() {
    if (window.location.href.substr(-2) !== "?r") {
        window.location = window.location.href + "?r";
    }
}

setTimeout('reloadIt()', 1000)();

</script>

esto funciona perfectamente


Nota: 1000 significa 1 segundo que puede configurar en los intervalos de tiempo que desee.
Godwin Tommy

1

Después de la </body>etiqueta:

<script type="text/javascript">
if (location.href.indexOf('reload')==-1)
{
   location.href=location.href+'?reload';
}
</script>

0

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.


0

Prueba con esto

var element = document.getElementById('position');        
element.scrollIntoView(true);`

0

Intente con el siguiente código

var windowWidth = $(window).width();

$(window).resize(function() {
    if(windowWidth != $(window).width()){
    location.reload();

    return;
    }
});

0
        var foo = true;
        if (foo){
            window.location.reload(true);
            foo = false;

        }

0

utilizar esta

<body onload =  "if (location.search.length < 1){window.location.reload()}">

0

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


0

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.


-1

Use rel = "external" como el siguiente es el ejemplo

<li><a href="index.html" rel="external" data-theme="c">Home</a></li>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.