¿Actualizar (recargar) una página una vez usando jQuery?

82

Me pregunto cómo actualizar / recargar una página (o incluso un div específico) una vez (!) Usando jQuery.

Lo ideal sería que de una manera correcta después de la DOM structureestá disponible (cf. onloadcaso) y no afectar negativamente back buttono bookmarkfuncionalidad.

Tenga en cuenta: replace() no está permitido debido a restricciones de terceros.

Pete
fuente
Me falta algo en tu pregunta. ¿Qué quieres decir con "actualizar" la página? Si la página se ha cargado, la recarga inmediata solo cargaría exactamente el mismo contenido, ¿verdad? ¿Qué está tratando de lograr?
Doug Neiner
Estoy trabajando en una plantilla que aparece "normalmente" primero, pero se fuerza a un iFrame cuando se actualiza / recarga. Ahora quiero que la página se muestre en ese iFrame también en su primera "llamada". TIA!
Pete
Creo que debería leer este artículo mycodingtricks.com/snippets/javascript/…
Shubham Kumar

Respuestas:

81

Muy bien, creo que tengo lo que estás pidiendo. Prueba esto

if(window.top==window) {
    // You're not in a frame, so you reload the site.
    window.setTimeout('location.reload()', 3000); //Reloads after three seconds
}
else {
    //You're inside a frame, so you stop reloading.
}

Si es una vez, hazlo

$('#div-id').triggerevent(function(){
    $('#div-id').html(newContent);
});

Si es periódicamente

function updateDiv(){
    //Get new content through Ajax
    ...
    $('#div-id').html(newContent);
}

setInterval(updateDiv, 5000); // That's five seconds

Por lo tanto, cada cinco segundos se actualizará el contenido div # div-id. Mejor que refrescar toda la página.

Ben
fuente
Gracias, pero quiero que la página se actualice / recargue solo UNA VEZ (por sesión de navegador si es posible) ...
Pete
¿Cuál es el detonante para recargar? un evento determinado o solo un momento?
Ben
desencadenante: la primera "llamada" de la página (lo siento, mi Inglés es un poco pobre g )
Pete
omfgroflmao, ¡eres un genio! La versión "editada" es exactamente lo que estaba buscando (todo el día por cierto ...). ¿Es posible agregar aquí un disparador de tiempo opcional? Entonces, ¿se ejecuta location.reload, digamos, después de 3 segundos ...? TIA (¡Realmente me alegraste el día!)
Pete
Sí, claro, simplemente cambie location.reload () con window.setTimeout ('location.reload ()', 3000);
Ben
66

Para recargar, puede intentar esto:

window.location.reload(true);
Mili
fuente
1
¿puedes explicar el argumento bool?
Tomfumb
7
El argumento de la función location.reload determina si el navegador debe recuperar el documento del servidor web. Si es necesario volver a extraer el documento del servidor web (por ejemplo, cuando el contenido del documento cambia dinámicamente), pase el argumento como 'verdadero' grizzlyweb.com/webmaster/javascripts/refresh.asp
Secret Squirrel
40
window.location.href=window.location.href;
Maz
fuente
mala reputación esto, jQuery preguntó HTML dado. -1
Stefano Groenland
Esto no funcionará si la URL tiene un hash como: mycodingtricks.com/#cool
Shubham Kumar
5

Utilizar esta:

    <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 ifcondición, la página se recargará solo una vez.

Parag Gaiwkad
fuente
4
$('#div-id').click(function(){

   location.reload();
        });

Ésta es la sintaxis correcta.

$('#div-id').html(newContent); //This doesnt work
swapnil
fuente
3

No tiene una función de actualización de jQuery, porque esto es lo básico de JavaScript.

Prueba esto:

<body onload="if (location.href.indexOf('reload')==-1) location.replace(location.href+'?reload');">
Adrian P.
fuente
Buena esa. incluso puedes ponerlo dentro de una función: <body onload = "javascript: init ()"> y function init () {if (location.href.indexOf ('reload') == - 1) location.replace (location. href + '& reload');}
Adrian P.
2

Utilizar:

<html>
    <head>
        <title>Reload (Refresh) Page Using Jquery</title>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                $('#reload').click(function() {
                    window.location.reload();
                });
            });
        </script>
    </head>
    <body>
        <button id="reload" >Reload (Refresh) Page Using</button>
    </body>
</html>
Vicky
fuente
1

Agregue esto a la parte superior de su archivo y el sitio se actualizará cada 30 segundos.

<script type="text/javascript">
    window.onload = Refresh;

    function Refresh() {
        setTimeout("refreshPage();", 30000);
    }
    function refreshPage() {
        window.location = location.href;
    }
</script>

Otro es: agregue la etiqueta de la cabeza

<meta http-equiv="refresh" content="30">
Paresh3489227
fuente
1
 - location = location
 - location = location.href
 - location = window.location
 - location = self.location
 - location = window.location.href
 - location = self.location.href
 - location = location['href']
 - location = window['location']
 - location = window['location'].href
 - location = window['location']['href']

No necesitas jQuery para esto. Puedes hacerlo con JavaScript.

Steve
fuente
0

Usa esto en su lugar

function timedRefresh(timeoutPeriod) {
    setTimeout("location.reload(true);",timeoutPeriod);
}

<a href="javascript:timedRefresh(2000)">image</a>
arunav
fuente
0

Prueba este código:

$('#iframe').attr('src', $('#iframe').attr('src'));
Koss
fuente
0

Prueba esto:

<input type="button" value="Reload" onClick="history.go(0)">
usuario1016195
fuente
0

Para actualizar la página con javascript, simplemente puede usar:

location.reload();
Felipe Leão
fuente
0

Es posible que deba usar la thisreferencia junto con location.reload() verificar esto, funcionará.

this.location.reload();
Tino José Thannippara
fuente