Lien pour recharger la page actuelle


175

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

J'ai actuellement trouvé 2 solutions, mais l'une d'elles comprend JavaScript et dans 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>

Existe-t-il un moyen de le faire, sans utiliser JavaScript ni connaître le chemin absolu?

Réponses:


198

J'utilise:

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

Vous n'avez pas encore trouvé de cas et / ou de navigateur où cela ne fonctionne pas comme prévu.

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

page1.html
folder1
    page2.html

Vous pouvez alors par page2.htmlécrit:

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

ÉDITER:

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

Considérez cela comme une navigation dans le système de fichiers dans un terminal; vous ne pouvez jamais cddans un fichier :)

MODIFIER 2:

Il semble que le comportement d'utilisation href="."n'est plus aussi prévisible, Firefox et Chrome ont peut-être changé leur façon de les gérer. Je ne me fierais pas entièrement à ma réponse originale, mais plutôt essayez à la fois la chaîne vide et le point dans différents navigateurs pour votre utilisation spécifique et assurez-vous d'obtenir le comportement souhaité.


25
Il convient de noter cependant que les données GET ne sont pas conservées avec cette méthode, considérez-la comme un "rechargement dur". L'utilisation d'une valeur href vide conservera les données GET, mais effacera la valeur de hachage (comme #these). En utilisant # ou? car la valeur href ajoutera des "déchets" à la nouvelle URL. J'ai trouvé que l'utilisation de la période est le moyen le plus propre de recharger.
Markus Amalthea Magnuson

5
Cette technique ne fonctionne pas pour moi sur mac chrome. En utilisant "." comme anhor, il se comporte comme si ".." et des liens vers la page parente. par exemple / admin / stuff devient / admin. Quelqu'un d'autre voit ce comportement?
Zac

3
Cette solution est fausse. Aussi dans Chrome ne fonctionne pas et pointe vers le répertoire parent. Vous devriez utiliser un href vide comme le suggère
@MarkusAmaltheaMagnuson

8
Cela semble ne fonctionner que si le composant de chemin de l'URL se termine par un /.
Kos

6
À partir d'aujourd'hui, cela ne fonctionne pas dans Firefox ou Chrome. Les deux navigateurs référencent le répertoire parent (pas la page actuelle) en utilisant href = "."
jtubre

135

Aucune des autres réponses ne présélectionnera des valeurs de chaîne de requête. Essayer

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

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


5
Ne fonctionne pas pour moi (Google Chrome 32). Je préfère <a href="javascript:location.reload();"> </a>
Gabriel

3
J'utilise Google Chrome 36.0.1985 et javascript: window.location.href = window.location.href fonctionne. location.reload () a pour effet malheureux de demander à l'utilisateur s'il souhaite actualiser la page dans Firefox et, selon le scénario, peut ne pas fournir le résultat souhaité. Voir stackoverflow.com/questions/2405117/… pour plus de discussion.
Simon Molloy

1
J'utilise angulaire avec le routage. Cela n'a pas fonctionné pour moi. Cependant, cela fonctionne -> <a href="javascript:"> click me </a>
John Henckel

Et si js est désactivé?

5
Cette solution ne préserve pas les ancres
thomas.winckell

77

Une façon d'utiliser javascript:

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

4
Préserve les chaînes de requêtes et les ancres ( ?query=string#anchor). Génial!
analog-nico

J'ai fini par utiliser cette réponse car la position de défilement est également conservée. Utile si vous utilisez un rechargement comme pseudo bouton "Annuler".
igneosaur

Cette solution fonctionne sur le client React
Andrius

pourriez-vous s'il vous plaît expliquer comment l'utiliser dans la syntaxe html?
Joanna Mikalai

J'ai une question, le trueparamètre est-il vraiment ce que vous devriez utiliser pour ce problème lorsque vous utilisez la window.location.reloadméthode? Cela en fera une actualisation difficile qui évite de tirer du cache, ce qui peut être ce que vous voulez dans certaines circonstances, mais je pense que dans la plupart des situations, vous voudriez profiter du cache, n'est-ce pas?
Stephen M Irving le

31

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

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


3
Malheureusement, cela ne fonctionne pas dans IE. De: msdn.microsoft.com/en-us/library/cc848861%28v=vs.85%29.aspx - Si HREF est spécifié comme une valeur vide (href = "" ou href =), l'exécution du lien peut afficher le répertoire contenant le document actuel, ou il peut générer une erreur, en fonction d'autres éléments du document et de l'environnement du serveur.
Bohdan Lyzanets

12
<a href="<?php echo $_SERVER["REQUEST_URI"]; ?>">Click me</a>

12
Je n'utilise pas PHP.
Tyilo

3
Remarqué le -1, ce n'est peut-être pas la solution dans votre cas (car c'est une solution php) mais je pense que c'est la solution la plus propre ici. Ceci parce qu'il donne une valeur valide à l'attribut href, c'est le plus propre. Si possible, évitez javascript. Donc +1.
rofavadeka

ty très utile. Pourquoi cela baisse-t-il les pouces? La question originale ne mentionne pas non plus js et la plupart des q font référence ici à JS ...
Andrew

@Andrew, la question d'origine est balisée avec #html et #hyperlink. S'il est vrai qu'un "lien normal pointant vers l'emplacement actuel" est une description incroyablement vague, je suis presque sûr qu'il peut être raisonnablement interprété comme la recherche d'une solution côté client uniquement. Une ancre où le href est rempli par PHP n'est pas un "lien normal" par n'importe quel étirement, c'est du code PHP.
endémique

@endemic Suggérer que javascript est "normal" et que php ne l'est pas est une opinion inutile. L'OP définit en fait normal comme n'incluant pas javascript et n'utilisant pas de chemin absolu. Il est intéressant de noter que la plupart des réponses sont en javascript.
Andrew

10

utilisez ceci pour recharger / actualiser la page actuelle

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

Ou utiliser

<a href="">refresh</a>

9
<a href=".">refresh current page</a>

ou si vous souhaitez passer des paramètres:

<a href=".?curreny='usd'">refresh current page</a>

7

<a href="https://stackoverflow.com/">Clicking me refreshes the page</a>

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


3
cela ne fonctionne que si vous êtes sur index.html ou autre doc racine / url
Stephen

@Stephen bien sûr. Tu as plutot raison. Apparemment, je suis plus rouillé que je ne le pensais. Je viens de le tester très vite et je me trouve être sur root.
Thomas Shields

Fonctionne très bien lorsque l'URL est par exemple. / blablabla alors que. me ramènerait à la racine.
Augustin Riedinger

6

Il n'y a malheureusement pas de moyen global de faire cela avec seulement HTML. Vous pouvez essayer de le faire, <a href="">test</a>mais cela ne fonctionne que dans certains navigateurs.


Cela ne fonctionne pas dans IE. De: msdn.microsoft.com/en-us/library/cc848861%28v=vs.85%29.aspx - Si HREF est spécifié comme une valeur vide (href = "" ou href =), l'exécution du lien peut afficher le répertoire contenant le document actuel, ou il peut générer une erreur, en fonction d'autres éléments du document et de l'environnement du serveur.
Bohdan Lyzanets

1
J'ai testé et cela fonctionne dans tous les principaux navigateurs modernes (Chrome, Firefox, Edge, Opera, Safari)
Donald Duck

5

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

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

il n'utilise qu'un tout petit peu de JS.

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


@FranciscoCorralesMorales, Désolé mais je pense que j'ai mal compris la question. Je pensais que l'OP essayait de créer un lien qui ne faisait rien. Mais maintenant je vois que l'OP veut un lien qui rechargera la page actuelle. (Je vais modifier).
John Henckel

Merci pour cet extrait de code, qui peut fournir une aide immédiate. Une explication appropriée améliorerait considérablement sa valeur éducative en montrant pourquoi c'est une bonne solution au problème, et la rendrait plus utile aux futurs lecteurs avec des questions similaires, mais pas identiques. Veuillez modifier votre réponse pour ajouter une explication et donner une indication des limites et des hypothèses applicables.
Toby Speight


2

Bien que la réponse acceptée ne fonctionne pas pour moi dans IE9, cela a fonctionné:

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

1
Je ne pense pas que cela fonctionnera si vous êtes intéressé par la préservation des paramètres de chaîne de requête.
WynandB

1
@WynandB est correct. cela supprimera tous les paramètres GET et POST. si c'est ce que vous voulez, ou si vous ne vous en souciez pas, cette astuce fonctionne très bien, cependant.
hanshenrik

2

Encore une solution

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

Bonne solution! Un petit conseil pour cette méthode est 0 est le paramètre par défaut, donc si vous essayez de recharger, vous pouvez simplement écrire: history.go()sans argument.
Stephen M Irving le

2
<a href="">Refresh!</a>

Laissez le href=""vide et cela actualisera la page.
Fonctionne également si certaines informations sont transmises à l'aide de formulaires.


0

J'utilise JS pour afficher uniquement le 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 comme:

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

0

Vous pouvez utiliser un formulaire pour effectuer un POST sur 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 actuelle. C'est un peu ennuyeux car si l'utilisateur appuie sur le bouton d'actualisation du navigateur, il recevra un do you want to resubmit the formmessage.


0

J'UTILISE DU HTML POUR RÉSOUDRE CE PROBLÈME
Utilisez:

<a href="page1.html"> Link </a>

* page1.html -> tapez le nom du fichier sur lequel vous travaillez (votre fichier HTML actuel)


Veuillez modifier le message. On ne sait pas quel langage de programmation vous utilisez, comment avez-vous essayé d'implémenter le code, etc.
Roee Anuar

J'ai utilisé HTML pour faire cette tâche.
Ayush Kumar

-1
<a href="/">Same domain, just like refresh</a>

Semble fonctionner uniquement si votre site Web est index.html, index.htm ou index.php (toute page par défaut).

Mais il semble que ce .soit la même chose et plus accepté

<a href=".">Same domain, just like refresh, (more used)</a>

Les deux fonctionnent parfaitement sur Chrome lorsque le domaine est à la fois http://ethttps://


-2

<a href="https://stackoverflow.com/home" target="_self">Reload the page</a>


Le problème est que si nous ne connaissons pas l'url ... target = "_ self" peut être omis
Hafenkranich

-3

Si vous utilisez des modèles php / smarty, vous pouvez faire quelque chose comme ceci:

<a href="{{$smarty.server.REQUEST_URI}}{if $smarty.server.REQUEST_URI|strstr:"?"}&{else}?{/if}newItem=1">Add New Item</a>

-4

Ajoutez simplement target = "_ blank" et le lien ouvrira une nouvelle page en conservant la page d'origine.


Comme vous le dites, cela ouvrira simplement la page spécifiée dans l' hrefattribut dans une nouvelle fenêtre / onglet. Cela ne répond en aucun cas à la question réelle.
Philip Stratford
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.