2010-04-01 23 views
74

Me pregunto cómo actualizar/volver a cargar una página (o incluso div específico) una vez (!) Con jQuery?Actualizar (volver a cargar) una página usando jQuery?

Lo ideal sería que de una manera correcta después de la DOM structure está disponible (cf. onload caso) y no afectar negativamente back button o bookmark funcionalidad.

Por favor, nota: replace() no está permitido debido a las restricciones de terceros.

+0

Me falta algo en su pregunta. ¿A qué te refieres con "actualizar" la página? Si la página se ha cargado, volver a cargar de inmediato solo cargará el mismo contenido, ¿verdad? ¿Qué está tratando de lograr? –

+0

Estoy trabajando en una plantilla que aparece "normalmente" primero, pero se fuerza en un iFrame cuando se actualiza/recarga. Ahora quiero que la página se muestre en ese iFrame en su primera "llamada" también. TIA! – Pete

+0

Creo que deberías leer este artículo http://mycodingtricks.com/snippets/javascript/refresh-page-using-jquery/ –

Respuesta

77

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

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 se trata de una vez, a continuación, sólo hacer

$('#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 

Así, cada cinco segundos el contenido div # DIV-id se actualizará Mejor que refrescar toda la página.

+0

Gracias, pero quiero que la página se actualice/vuelva a cargar solo UNA VEZ (por sesión de navegador si es posible) ...? – Pete

+0

¿Cuál es el disparador para recargar? un cierto evento o solo el tiempo? – Ben

+0

activador: la primera "llamada" de la página (lo siento, mi inglés es un poco pobre * g *) – Pete

40
window.location.href=window.location.href; 
+14

este código actualmente no usa jQuery ;-) – zerkms

+0

mal rep, jQuery preguntó HTML dado. -1 –

+0

Esto no funcionará si la URL tiene hash como: http://mycodingtricks.com/#cool –

66

Para volver a cargar, 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' http://grizzlyweb.com/webmaster/javascripts/refresh.asp –

+2

this no funciona en cromo y safari por alguna razón. –

3

Usted no tienen una función de actualización jQuery, porque esto es lo básico de JavaScript.

Prueba esto:

<body onload="if (location.href.indexOf('reload')==-1) location.replace(location.href+'?reload');"> 
+0

Nice one. incluso puede ponerlo dentro de una función: y la función init() {if (location.href.indexOf ('reload') == - 1) location.replace (location. href + 'y reload');} –

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

    location.reload(); 
     }); 

Esta es la sintaxis correcta.

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

Prueba este código:

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

Use esto en lugar

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

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

Utilice 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 condición if, la página volverá a cargar una sola vez .

0

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

location.reload(); 
2

Uso:

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

Prueba esto:

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

Añadir 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> 

Otra es: Agregar a 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 es necesario jQuery para esto. Puedes hacerlo con JavaScript.

0

Es posible que necesite utilizar la referencia this junto con location.reload() verifique esto, funcionará.

this.location.reload(); 
Cuestiones relacionadas