¿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.


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.


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

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


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.


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

   location.reload();
        });

Ésta es la sintaxis correcta.

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

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');">

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>

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">

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.


0

Usa esto en su lugar

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

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

0

Prueba este código:

$('#iframe').attr('src', $('#iframe').attr('src'));


0

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

location.reload();

0

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

this.location.reload();
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.