web-dev-qa-db-fra.com

Lien pour recharger la page actuelle

Est-il possible d'avoir un lien normal pointant vers l'emplacement actuel?

J'ai actuellement trouvé 2 solutions, mais l'une d'entre elles inclut JavaScript et l'autre, vous devez connaître le chemin absolu vers la page:

<a href="#" onclick="window.location.reload(true);">1</a>
<a href="/foobar/">2</a>
<a href="#">3 (of course not working)</a>

Est-il possible de faire cela sans utiliser JavaScript ou connaître le chemin absolu?

153
Tyilo

J'ai utilisé:

<a href=".">link</a>

Reste à trouver un cas et/ou un navigateur où il ne fonctionne pas comme prévu.

Période signifie le chemin actuel. Vous pouvez également utiliser .. pour faire référence au dossier situé au-dessus du chemin actuel, par exemple, si vous avez cette structure de fichier:

page1.html
folder1
    page2.html

Vous pouvez ensuite écrire dans page2.html:

<a href="../page1.html">link to page 1</a>

J'espère que ça t'as aidé!

EDIT:

Je ne sais pas si le comportement a changé ou s'il a toujours été comme cela, mais Chrome (et peut-être d'autres) traitera les périodes décrites ci-dessus comme concernant les répertoires , pas de fichiers. Cela signifie que si vous êtes à http://example.com/foo/bar.html vous êtes vraiment dans le répertoire /foo/ et une valeur href de . dans bar.html fera référence à /foo/ plutôt que bar.html

Voyez cela comme une navigation dans le système de fichiers d’un terminal; vous ne pouvez jamais cd dans un fichier :)

EDIT 2:

Il semble que le comportement d'utilisation de href="." ne soit plus aussi prévisible. Firefox et Chrome auraient peut-être changé leur façon de les gérer. Je ne m'appuierais pas entièrement sur ma réponse d'origine, mais essayerais plutôt la chaîne vide et la période dans les différents navigateurs pour votre utilisation spécifique et assurez-vous d'obtenir le comportement souhaité.

170

Aucune des autres réponses ne conservera de valeur de chaîne de requête. Essayer

<a href="javascript:window.location.href=window.location.href">

Certes, cela implique javascript, mais, à moins que vos utilisateurs aient le script désactivé, c'est assez simple.

127
Simon Molloy

Une façon en utilisant javascript:

<a href="javascript:window.location.reload(true)">Reload</a>
66
Vinay Sahni

Vous pouvez faire ceci: <a href="">This page</a>

mais je ne pense pas que cela préserve les données GET et POST.

30
Stephen
<a href="<?php echo $_SERVER["REQUEST_URI"]; ?>">Click me</a>
13
Hatzegopteryx
<a href=".">refresh current page</a>

ou si vous voulez passer des paramètres:

<a href=".?curreny='usd'">refresh current page</a>
9
Abie Abby Del Ray

utiliser ceci pour recharger/actualiser la page actuelle

<a href="#" onclick="window.location.reload(true);">
8
kaushik

<a href="/">Clicking me refreshes the page</a>

<a href="?">Click Me To Reload the page</a>

7
Thomas Shields

Malheureusement, il n’existe aucun moyen global de le faire uniquement avec HTML. Vous pouvez essayer de faire <a href="">test</a> mais cela ne fonctionne que dans certains navigateurs.

5
Michael Walsh

URL complètement idempotente qui préserve le chemin, les paramètres et l'ancre.

 <a href="javascript:"> click me </a>

il utilise seulement un tout petit peu de JS.

EDIT: cela ne recharge pas la page. C'est un lien qui ne fait rien.

4
John Henckel

Alors que la réponse acceptée ne fonctionnait pas pour moi dans IE9, voici ce qui se passait:

<a href="?">link</a>
2
Mark

Une autre solution

<a href="javascript:history.go(0)">Reload</a>
2
SashaPinsk

J'utilise JS pour afficher uniquement la div avec un identifiant spécifique dans la page des balises d'un site jekyll. Avec un ensemble de liens dans la même page, vous affichez l'élément correspondant:

function hide_others() {
    $('div.item').hide();
    selected = location.hash.slice(1);
    if (selected) {
        $('#' + selected).show();
    }
    else {
    $('div.item').show();
    }
}

les liens utilisent des liens tels que:

<a href="javascript:window.location.href='/tags.html#{{ tag[0] }}-ref'; hide_others()">{{ tag[0] }}</a>
0
david villa

Vous pouvez utiliser un formulaire pour effectuer un POST vers la même URL.

 <form  method="POST" name="refresh" id="refresh">
 <input type="submit" value="Refresh" />
 </form>

Cela vous donne un bouton qui actualise la page en cours. C'est un peu gênant car si l'utilisateur appuie sur le bouton d'actualisation du navigateur, il recevra un message do you want to resubmit the form.

0
Tim Bray

essayez ceci

<a href="javascript:window.location.href=window.location.href">
0
Love Kumar