Come creare un backlink HTML?


287

Qual è il modo più semplice per creare un <a>tag che si collega alla pagina Web precedente? Fondamentalmente un pulsante Indietro simulato, ma un collegamento ipertestuale reale. Solo tecnologie lato client, per favore.

Modifica
Alla ricerca di soluzioni che abbiano il vantaggio di mostrare l'URL della pagina su cui si sta facendo clic durante il passaggio del mouse, come un normale collegamento ipertestuale statico. Preferirei che l'utente non lo guardasse history.go(-1)mentre passa con il mouse su un collegamento ipertestuale. Il migliore che ho trovato finora è:

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

È document.referreraffidabile? Cross-browser sicuro? Sarò felice di accettare una risposta migliore.


2
JavaScript è una tecnologia lato client, alcuni client (come me) scelgono di disabilitarlo (per impostazione predefinita). Questo è il potere del cliente! : D Ma sì, non c'è modo per l'HTML da solo di determinare quale fosse la pagina precedente.
animuson

Risposte:


514

E un altro modo:

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


9
E per un pulsante:<button type="button" onclick="javascript:history.back()">Back</button>
Leo,

1
Un aspetto negativo di questo approccio è che le funzionalità standard del browser come "passa con il mouse per vedere l'URL" e il tasto destro del mouse -> copia link verranno interrotte.
Vivek Maharajh,

Penso che sia più sulla semantica. Un "pulsante" indietro è più adatto di un "collegamento" indietro. Entrambe le opzioni sono fantastiche ed entrambe le opzioni sono corrette a modo loro.
Jaspreet Singh,

111

Questa soluzione ha il vantaggio di mostrare l'URL della pagina collegata al passaggio del mouse, come fa la maggior parte dei browser per impostazione predefinita, anziché history.go(-1)o simile:

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

9
Ciò ha anche il vantaggio di coprire il caso in cui la pagina di riferimento si è aperta con un target="_blank"attributo sul collegamento, cosa history.go(-1)che non accade.
Chris Krycho,

4
Questa soluzione perde la parte di collegamento che segue #, il 'javascript: history.back ()' funziona correttamente.
Liviu,

16
L'aspetto negativo di questa soluzione è che non potrai tornare indietro di più di una pagina. Esempio; navigare alle pagine a, b, c, d - premere ripetutamente il pulsante indietro c, d, c, d, c, d. Confronta questo con .history.back () a, b, c, d premi ripetutamente il pulsante indietro d, c, b, a
Atreeon

Come posso farlo in modo che nel caso in cui non ci sia una pagina posteriore, quindi reindirizzare a un URL fissohistory.back() || "myaction/mycontroller"
annida il

@orangesherbert L'ho affrontato in una nuova risposta (che soddisfa anche il requisito "mostra URL".
Vivek Maharajh,

44

Il modo più semplice è usare history.go(-1);

Prova questo:

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


41

puoi provare javascript

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

consultare il pulsante Indietro JavaScript

MODIFICARE

per visualizzare l'URL di riferimento http://www.javascriptkit.com/javatutors/crossmenu2.shtml

e invia l'elemento a se stesso in onmouseover come segue

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>

controlla jsfiddle


puoi spiegare l'ultima modifica? Voglio solo un link normale come mostrato nella parte inferiore della maggior parte dei browser.
Paislee,

come tutti i browser mostrano per tutti per quello non devi fare nulla ma se vuoi mostrarlo nel tuo div puoi specificare un div tabledescriptionovunque in una pagina per mostrare un collegamento al passaggio del mouse sul tag anchor
Hemant Metalia

40

Questa soluzione ti offre il meglio di entrambi i mondi

  • Gli utenti possono passare con il mouse sopra il collegamento per visualizzare l'URL
  • Gli utenti non finiscono con un back-stack danneggiato

Maggiori dettagli nei commenti sul codice qui sotto.

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>


Risposta eccezionale. Lo uso in quasi tutti i miei progetti a eliminazione diretta nel contesto dell'associazione personalizzata.
pimbrouwers,

Bella risposta! Ho dovuto aggiungere return false;alla funzione onclick in Chrome per evitare che aggiungesse la pagina corrente alla cronologia del browser.
Marshall Morrise,

25

Per tornare alla pagina precedente usando il tag di ancoraggio <a>, di seguito sono riportati 2 metodi di lavoro e fuori di essi il 1 ° è più veloce e ha un grande vantaggio nel tornare alla pagina precedente.

Ho provato entrambi i metodi.

1)

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

Il metodo sopra (1) funziona alla grande se hai fatto clic su un collegamento e hai aperto il collegamento in una nuova scheda nella finestra del browser corrente.

2)

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

Il metodo sopra (2) funziona bene solo se si è fatto clic su un collegamento e si è aperto un collegamento in una scheda corrente nella finestra del browser corrente.

Non funzionerà se si dispone di un collegamento aperto in Nuova scheda. Qui history.back()non funzionerà se il collegamento è aperto in Nuova scheda del browser web.


18

Un collegamento a ritroso è un collegamento che sposta il browser indietro di una pagina, come se l'utente avesse fatto clic sul pulsante Indietro disponibile nella maggior parte dei browser. I collegamenti posteriori utilizzano JavaScript. Sposta il browser indietro di una pagina se il browser supporta JavaScript (cosa che fa) e se supporta l' window.historyoggetto, necessario per i collegamenti a ritroso.

I modi semplici sono

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

O:

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

In generale, non è necessario un collegamento a ritroso ... il pulsante Indietro di solito è abbastanza ben fatto, e di solito puoi anche semplicemente collegarti alla pagina precedente del tuo sito. Tuttavia, a volte potresti voler fornire un link a una delle numerose pagine "precedenti", ed è qui che è utile un back link. Quindi ti rimando sotto il tutorial se vuoi fare in modo più avanzato:

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


2
A differenza della soluzione più votata, ciò mantiene la posizione di scorrimento dell'utente.
Ketri,

@Ketri puoi fornire supporto per la dichiarazione? dovrebbero essere identici: w3schools.com/jsref/met_his_back.asp
FarO

8

prova questo

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


1

Puoi anche usare a history.back()fianco document.write()per mostrare il link solo quando c'è effettivamente un posto dove tornare a:

<script>
  if (history.length > 1) {
    document.write('<a href="javascript:history.back()">Go back</a>');
  }
</script>

document.writesovrascrive tutto sulla pagina. Perché mai lo useresti?
jpaugh,

È necessario eseguire questo script mentre la pagina è ancora in fase di caricamento.
Leonid Vasilev,

0

Il modo migliore per usare un pulsante è

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.