2010-04-01 9 views
74

Je me demande comment rafraîchir/recharger une page (ou même div spécifique) une fois (!) En utilisant jQuery?Actualiser (recharger) une page en utilisant jQuery?

Idéalement d'une manière juste après la DOM structure est disponible (voir événement onload) et non une incidence négative sur back button ou bookmark fonctionnalité.

Veuillez noter: replace() n'est pas autorisé en raison de restrictions de tiers.

+0

Il me manque quelque chose dans votre question. Que voulez-vous dire par "actualiser" la page. Si la page a été chargée, recharger immédiatement chargerait exactement le même contenu, non? Qu'est-ce que vous essayez d'accomplir? –

+0

Je travaille sur un template qui arrive "normalement" en premier mais qui est forcé dans un iFrame lorsqu'il est rafraîchi/rechargé. Maintenant, je veux que la page s'affiche dans ce iFrame lors de son premier «appel». TIA! – Pete

+0

Je pense que vous devriez lire cet article http://mycodingtricks.com/snippets/javascript/refresh-page-using-jquery/ –

Répondre

77

D'accord, je pense avoir trouvé ce que vous demandiez. Essayez cette

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

S'il est une fois, puis juste faire

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

Si elle est périodiquement

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

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

Ainsi, toutes les cinq secondes de la div # contenu div id va se rafraîchir. Mieux que rafraîchir toute la page.

+0

Merci mais je veux la page pour actualiser/recharger seulement une fois (par session de navigateur si possible) ...? – Pete

+0

Quel est le déclencheur du rechargement? un certain événement ou juste le temps? – Ben

+0

trigger: le premier "appel" de la page (désolé, mon anglais est un peu pauvre * g *) – Pete

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

ce code n'utilise pas réellement jQuery ;-) – zerkms

+0

mauvais représentant ceci, jQuery a demandé HTML donné. -1 –

+0

Cela ne fonctionnera pas si URL a hash comme: http://mycodingtricks.com/#cool –

66

Pour recharger, vous pouvez essayer ceci:

window.location.reload(true); 
+1

pouvez-vous expliquer l'argument bool? – tomfumb

+7

L'argument de la fonction location.reload détermine si le navigateur doit extraire le document du serveur Web . Si nécessaire pour extraire à nouveau le document du serveur Web (par exemple, lorsque le contenu du document change dynamiquement), passez l'argument en tant que 'true' http://grizzlyweb.com/webmaster/javascripts/refresh.asp –

+2

this ne fonctionne pas en chrome et safari pour une raison quelconque. –

3

Vous n'avez pas une fonction de rafraîchissement jQuery, car cela est essentiel JavaScript.

Essayez ceci:

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

Nice one. vous pouvez même le mettre dans une fonction: et la fonction init() {if (location.href.indexOf ('reload') == - 1) location.replace (emplacement. href + '& reload');} –

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

    location.reload(); 
     }); 

C'est la syntaxe correcte.

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

Essayez ce code:

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

Utilisez ce lieu

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

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

Utilisez ceci:

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

En raison de la condition if, la page se recharge qu'une seule fois .

0

Pour la page rafraîchissante avec javascript, vous pouvez simplement utiliser:

location.reload(); 
2

Utilisation:

<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

Essayez ceci:

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

Ajouter ce en haut de votre dossier et le site sera actualisé toutes les 30 secondes.

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

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

Un autre est: Ajouter dans la balise head

<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'] 

Vous n'avez pas besoin jQuery pour cela. Vous pouvez le faire avec JavaScript.

0

Vous devrez peut-être utiliser référence this avec location.reload() vérifier cela, cela va fonctionner.

this.location.reload();