2010-02-23 6 views
21

Prenez cet extrait par exemple de code:Javascript: Comment recharger un site avec un tag d'ancrage?

window.location.href = 'mysite.htm#images'; 

étant déjà sur le site mysite.htm et le déclenchement de la recharge à travers location.href ne sera pas recharger la page mais sauter à l'ancre nommée dans l'URL.

J'ai besoin d'un mécanisme pour vraiment recharger la page. Des idées?

PS: J'ai essayé d'autres méthodes de localisation, mais aucun d'entre eux ne l'affaire :(

EDIT
Ne pas accrocher sur le filetype htm je besoin pour les sites dynamiques et

..
+13

'onclick =" alert ('S'il vous plaît appuyez sur F5 ') "' – nickf

+0

Donc, vous voulez recharger la page, puis passer à l'ancre de nom? – Pbirkoff

+1

@Pbirkoff Oui, exactement. @nickf Hehe, vous avez fait ma journée: D – aefxx

Répondre

49

Après avoir défini l'URL spécifiée dans l'emplacement, émettez window.location.reload(true). Cela forcera le navigateur à recharger la page.

2

vous pourriez être un tricheur et ajouter une chaîne de requête aléatoire, la redirection vers « mysite.htm? images aléatoires = 289954034 # ».

Mais si cela est une page statique, comme .htm implique, qu'est-ce que vous avez besoin rechargeant pour? Si C'est pour que votre onload Javascript puisse se produire une seconde fois, peut-être que vous avez juste besoin de changer le flux de votre application.

+1

Ne laissez pas l'extension vous tromper. Vous pouvez simplement réécrire les URL pour les faire ressembler à des fichiers html. – Jage

+0

C'est vrai, mais j'ai rarement vu un réécriteur choisir '.htm' sur' .html'. C'est pourquoi j'ai choisi le mot "implique" :) – Matchu

+0

Il ne s'agit pas de pages statiques ou dynamiques quand AJAX entre en jeu. Penses-y. – aefxx

7

utiliser la partie de requête de l'URL pour ajouter une chaîne aléatoire:

// Use a timestamp to make sure the page is always reloaded 
window.location.href = 'mysite.htm?r='+(+new Date())+'#images'; 
-1

Essayez ceci: window.location.href = 'mysite.htm?';

EDIT: Cela ne fonctionnera que la première fois; après cela, la mise en cache prend de nouveau effet.

2

Bien que je pense que la réponse d'alemjerus est dans la bonne direction, il ne fonctionne pas lorsque la nouvelle URL pointe vers la page différente, au moins sur mon Chrome v40.

exemple, lorsque la nouvelle URL juste ajouter un point d'ancrage, il fonctionne très bien:

var redirectToURL = '/questions/2319004/javascript-how-to-truly-reload-a-site-with-an-anchor-tag#answer-28621360'; 
window.location.href = redirectToURL; 
window.location.reload(true); 

Mais quand il pointe vers une autre page, l'utilisateur sera toujours rester sur la page en cours après reload. (Exécutez les codes suivants dans un lot, aucun délai entre location.href= et location.reload):

var redirectToURL = 'http://stackoverflow.com'; 
window.location.href = redirectToURL; 
window.location.reload(true); 

Dans ce cas, retirez les location.reload œuvres. Donc, ma solution est de vérifier si la nouvelle URL est sur la même page:

var urlParser = document.createElement('a'); 
urlParser.href = redirectToURL; 
if (urlParser.origin + urlParser.pathname === location.origin + location.pathname) { 
    window.location.reload(true); 
} 

testé sur Chrome et Safari, n'ont pas essayé IE. Veuillez me faire savoir si cela ne fonctionne pas sur un navigateur majeur.

-1

fonctionne avec la plupart des navigateurs Mozilla

<a title="Reset this Document" href="javascript:void()" onclick="window.location.href='#'"><font color="red">Reset</font></a> 

Code Ligne:

window.location.href='#' 
or window.location.href='' 

Le dernier code ne fonctionnera pas correctement avec IE