Comment faire un lien de retour HTML?

288

Quelle est la façon la plus simple de créer une <a>balise qui renvoie à la page Web précédente? Fondamentalement, un bouton de retour simulé, mais un véritable lien hypertexte. Technologies côté client uniquement, s'il vous plaît.

Modifier
Vous recherchez des solutions qui ont l'avantage d'afficher l'URL de la page sur laquelle vous êtes sur le point de cliquer lorsque vous survolez, comme un lien hypertexte normal et statique. Je préfère que l'utilisateur ne regarde pas en history.go(-1)survolant un lien hypertexte. Le meilleur que j'ai trouvé jusqu'à présent est:

<script>
  document.write('<a href="' + document.referrer + '">Go Back</a>');
</script>

Est document.referrerfiable? Sécurité multi-navigateur? Je serai heureux d'accepter une meilleure réponse.

paislee
la source
2
JavaScript est une technologie côté client, certains clients (comme moi) choisissent simplement de le désactiver (par défaut). C'est le pouvoir du client! : D Mais oui, il n'y a aucun moyen pour HTML seul de déterminer ce qu'était la page précédente.
animuson

Réponses:

514

Et une autre façon:

<a href="javascript:history.back()">Go Back</a>

Bajrang
la source
9
Et pour un bouton:<button type="button" onclick="javascript:history.back()">Back</button>
Leo
1
Un inconvénient de cette approche est que les fonctionnalités standard du navigateur telles que "survoler pour voir l'URL" et clic droit -> copier le lien seront rompues.
Vivek Maharajh
Je pense que c'est plus sur la sémantique. Un "bouton" de retour est plus approprié qu'un "lien" de retour. Les deux options sont excellentes et les deux options sont correctes à leur manière.
Jaspreet Singh
111

Cette solution a l'avantage d'afficher l'URL de la page liée au survol, comme la plupart des navigateurs le font par défaut, au lieu de history.go(-1)ou similaire:

<script>
    document.write('<a href="' + document.referrer + '">Go Back</a>');
</script>
paislee
la source
9
Cela a également l'avantage de couvrir le cas où la page de référence s'est ouverte avec un target="_blank"attribut sur le lien, ce qui history.go(-1)n'est pas le cas.
Chris Krycho
4
Cette solution perd la partie lien suivant #, le 'javascript: history.back ()' fonctionne correctement.
Liviu
16
L'inconvénient de cette solution est que vous ne pourrez pas revenir en arrière sur plus d'une page. Exemple; accédez aux pages a, b, c, d - appuyez plusieurs fois sur le bouton de retour c, d, c, d, c, d. Comparez cela à .history.back () a, b, c, d appuyez plusieurs fois sur le bouton de retour d, c, b, a
atreeon
Comment puis-je faire en sorte qu'il n'y ait pas de dernière page, puis rediriger vers une URL fixehistory.back() || "myaction/mycontroller"
nid
@orangesherbert J'ai résolu ce problème dans une nouvelle réponse (qui satisfait également l'exigence "afficher l'URL".
Vivek Maharajh
44

La façon la plus simple est d'utiliser history.go(-1);

Essaye ça:

<a href="#" onclick="history.go(-1)">Go Back</a>

apiguy
la source
42

vous pouvez essayer javascript

<A HREF="javascript:history.go(-1)">

reportez-vous au bouton Retour JavaScript

ÉDITER

pour afficher l'URL de référence http://www.javascriptkit.com/javatutors/crossmenu2.shtml

et envoyer l'élément a lui-même dans onmouseover comme suit

function showtext(thetext) {
  if (!document.getElementById)
    return
  textcontainerobj = document.getElementById("tabledescription")
  browserdetect = textcontainerobj.filters ? "ie" : typeof textcontainerobj.style.MozOpacity == "string" ? "mozilla" : ""
  instantset(baseopacity)
  document.getElementById("tabledescription").innerHTML = thetext.href
  highlighting = setInterval("gradualfade(textcontainerobj)", 50)
}
 <a href="http://www.javascriptkit.com" onMouseover="showtext(this)" onMouseout="hidetext()">JavaScript Kit</a>

vérifier jsfiddle

Hemant Metalia
la source
pouvez-vous expliquer ce dernier montage? je veux juste un lien normal comme il apparaît au bas de la plupart des navigateurs.
paislee
comme tous les navigateurs le montrent pour tout cela, vous n'avez rien à faire, mais si vous voulez l'afficher dans votre propre div, vous pouvez spécifier un div tabledescriptionn'importe où dans une page pour afficher un lien à la souris sur la balise d'ancrage
Hemant Metalia
40

Cette solution vous offre le meilleur des deux mondes

  • Les utilisateurs survolent le lien pour voir l'URL
  • Les utilisateurs ne se retrouvent pas avec un back-stack corrompu

Plus de détails dans les commentaires de code ci-dessous.

var element = document.getElementById('back-link');

// Provide a standard href to facilitate standard browser features such as 
//  - Hover to see link
//  - Right click and copy link
//  - Right click and open in new tab
element.setAttribute('href', document.referrer);

// We can't let the browser use the above href for navigation. If it does, 
// the browser will think that it is a regular link, and place the current 
// page on the browser history, so that if the user clicks "back" again,
// it'll actually return to this page. We need to perform a native back to
// integrate properly into the browser's history behavior
element.onclick = function() {
  history.back();
  return false;
}
<a id="back-link">back</a>

Vivek Maharajh
la source
Réponse impressionnante. Je l'utilise dans presque tous mes projets à élimination directe dans le contexte de la liaison personnalisée.
pimbrouwers
Très bonne réponse! J'ai dû ajouter return false;à la fonction onclick dans Chrome pour l'empêcher d'ajouter la page actuelle à l'historique du navigateur.
Marshall Morrise
25

Pour revenir à la page précédente en utilisant Anchor Tag <a>, voici 2 méthodes de travail et parmi elles la 1ère est plus rapide et a un grand avantage à revenir à la page précédente.

J'ai essayé les deux méthodes.

1)

<a href="#" onclick="location.href = document.referrer; return false;">Go Back</a>

La méthode ci-dessus (1) fonctionne très bien si vous avez cliqué sur un lien et ouvert le lien dans un nouvel onglet dans la fenêtre actuelle du navigateur.

2)

<a href="javascript:history.back()">Go Back</a>

La méthode ci-dessus (2) ne fonctionne correctement que si vous avez cliqué sur un lien et ouvert le lien dans un onglet actuel dans la fenêtre du navigateur actuel.

Cela ne fonctionnera pas si vous avez un lien ouvert dans le nouvel onglet. Ici, history.back()cela ne fonctionnera pas si le lien est ouvert dans le nouvel onglet du navigateur Web.

Vir
la source
18

Un lien de retour est un lien qui fait reculer le navigateur d'une page, comme si l'utilisateur avait cliqué sur le bouton Retour disponible dans la plupart des navigateurs. Les liens de retour utilisent JavaScript. Il recule le navigateur d'une page si votre navigateur prend en charge JavaScript (ce qu'il fait) et s'il prend en charge lewindow.history objet, ce qui est nécessaire pour les liens de retour.

Des moyens simples sont

<a href="#" onClick="history.go(-1)">Go Back</a>

OU:

function goBack() {
  window.history.back()
}
<a href="#" onclick="goBack()" />Go Back</a>

De manière générale, un lien arrière n'est pas nécessaire… le bouton Retour suffit généralement assez bien, et vous pouvez également simplement créer un lien vers la page précédente de votre site. Cependant, parfois, vous souhaiterez peut-être fournir un lien vers l'une des pages "précédentes", et c'est là qu'un lien de retour est utile. Je vous réfère donc ci-dessous au tutoriel si vous souhaitez le faire de manière plus avancée:

http://www.htmlcodetutorial.com/linking/linking_famsupp_108.html

Ruslan López
la source
2
Contrairement à la solution la plus votée, cela maintient la position de défilement de l'utilisateur.
Ketri
@Ketri pouvez-vous soutenir la déclaration? ils devraient être identiques: w3schools.com/jsref/met_his_back.asp
FarO
8

essaye ça

<a href="javascript:history.go(-1)"> Go Back </a>
mack
la source
4
<a href="#" onclick="history.back();">Back</a>
Roee Gavirel
la source
1

Vous pouvez également utiliser à history.back()côté document.write()pour afficher le lien uniquement lorsqu'il existe réellement un endroit où revenir:

<script>
  if (history.length > 1) {
    document.write('<a href="javascript:history.back()">Go back</a>');
  }
</script>
Leonid Vasilev
la source
document.writeécrase tout sur la page. Pourquoi voudriez-vous jamais utiliser ça?
jpaugh
Vous devez exécuter ce script pendant le chargement de la page.
Leonid Vasilev
0

La meilleure façon d'utiliser un bouton est

<input type= 'button' onclick='javascript:history.back();return false;' value='Back'>

Ashutosh K Singh
la source