Jak zrobić link zwrotny HTML?

286

Jaki jest najprostszy sposób utworzenia <a>tagu, który prowadzi do poprzedniej strony internetowej? Zasadniczo symulowany przycisk Wstecz, ale rzeczywiste hiperłącze. Poproszę tylko technologie po stronie klienta.

Edytuj
Szukanie rozwiązań, które mają tę zaletę, że pokazują URL strony, którą chcesz kliknąć podczas najechania kursorem, jak normalne, statyczne hiperłącze. Wolałbym, żeby użytkownik nie patrzył history.go(-1)podczas najechania na hiperlink. Jak dotąd znalazłem:

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

Jest document.referrerniezawodny? Bezpieczny dla różnych przeglądarek? Z przyjemnością przyjmę lepszą odpowiedź.

paislee
źródło
2
JavaScript jest technologią po stronie klienta, niektórzy klienci (jak ja) po prostu ją wyłączają (domyślnie). To jest moc klienta! : D Ale tak, nie ma sposobu, aby HTML sam określał poprzednią stronę.
animuson

Odpowiedzi:

514

I inny sposób:

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

Bajrang
źródło
9
I dla przycisku:<button type="button" onclick="javascript:history.back()">Back</button>
Leo
1
Minusem tego podejścia jest to, że standardowe funkcje przeglądarki, takie jak „najedź kursorem, aby zobaczyć adres URL” i kliknięcie prawym przyciskiem myszy -> skopiuj link, zostaną zepsute.
Vivek Maharajh,
Myślę, że chodzi bardziej o semantykę. „Przycisk” powrotu jest bardziej odpowiedni niż „link” wstecz. Obie opcje są świetne i obie są poprawne na swój sposób.
Jaspreet Singh,
111

Zaletą tego rozwiązania jest wyświetlanie adresu URL połączonej ze stroną strony po najechaniu kursorem, jak większość przeglądarek robi to domyślnie zamiast history.go(-1)lub podobnie:

<script>
    document.write('<a href="' + document.referrer + '">Go Back</a>');
</script>
paislee
źródło
9
Ma to również tę zaletę, że obejmuje przypadek, w którym strona odsyłająca została otwarta za pomocą target="_blank"atrybutu w łączu, co history.go(-1)nie.
Chris Krycho,
4
To rozwiązanie traci część linku po #, „javascript: history.back ()” działa poprawnie.
Liviu
16
Wadą tego rozwiązania jest to, że nie będziesz mógł wrócić o więcej niż jedną stronę. Przykład; przejdź do stron a, b, c, d - kilkakrotnie naciśnij przycisk wstecz c, d, c, d, c, d. Porównaj to z .history.back () a, b, c, d naciskaj przycisk wstecz d, c, b, a
atreeon
Jak mogę to zrobić, aby w przypadku braku strony tylnej przekierować do stałego adresu URLhistory.back() || "myaction/mycontroller"
zagnieździć
@orangesherbert Odpowiedziałem na to w nowej odpowiedzi (która również spełnia wymóg „pokaż adres URL”)
Vivek Maharajh,
44

Najprostszym sposobem jest użycie history.go(-1);

Spróbuj tego:

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

apiguy
źródło
41

możesz wypróbować javascript

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

patrz JavaScript Back Button

EDYTOWAĆ

wyświetlać adres URL strony polecającej http://www.javascriptkit.com/javatutors/crossmenu2.shtml

i wyślij element sam w mymoverover w następujący sposób

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>

sprawdź jsfiddle

Hemant Metalia
źródło
czy możesz wyjaśnić tę ostatnią edycję? Chcę tylko normalny link, taki jak na dole większości przeglądarek.
paislee
ponieważ wszystkie przeglądarki pokazują dla wszystkich, że nie musisz nic robić, ale jeśli chcesz pokazać to we własnym div, możesz określić div w tabledescriptiondowolnym miejscu na stronie, aby wyświetlić link nad tagiem zakotwiczenia nad myszą
Hemant Metalia
40

To rozwiązanie zapewnia to, co najlepsze z obu światów

  • Użytkownicy mogą najechać kursorem na link, aby zobaczyć adres URL
  • Użytkownicy nie mają uszkodzonego stosu

Więcej szczegółów w komentarzach do kodu poniżej.

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
źródło
Świetna odpowiedź. Używam tego w prawie wszystkich moich projektach nokautowych w kontekście niestandardowego wiązania.
pimbrouwers
Świetna odpowiedź! Musiałem dodać return false;do funkcji onclick w Chrome, aby nie dodawała bieżącej strony do historii przeglądarki.
Marshall Morrise
25

Aby wrócić do poprzedniej strony za pomocą Anchor Tag <a>, poniżej znajdują się 2 metody pracy, z których pierwsza jest szybsza i ma jedną wielką zaletę w powrocie do poprzedniej strony.

Próbowałem obu metod.

1)

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

Powyższa metoda (1) działa świetnie, jeśli kliknąłeś link i otworzyłeś link w nowej karcie w bieżącym oknie przeglądarki.

2)

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

Powyższa metoda (2) działa poprawnie tylko wtedy, gdy kliknąłeś link i otworzyłeś link na bieżącej karcie w bieżącym oknie przeglądarki.

To nie zadziała, jeśli masz otwarty link w nowej karcie. Tu history.back()nie będzie działać, jeśli związek jest otwarty w nowej karcie przeglądarki internetowej.

Vir
źródło
18

Łącze wsteczne to łącze, które przesuwa przeglądarkę o jedną stronę wstecz, tak jakby użytkownik kliknął przycisk Wstecz dostępny w większości przeglądarek. Powrót linki używają JavaScript. Przenosi przeglądarkę o jedną stronę wstecz, jeśli przeglądarka obsługuje JavaScript (co robi) i jeśli obsługuje window.historyobiekt, który jest niezbędny dla linków zwrotnych.

Proste sposoby są

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

LUB:

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

Ogólnie rzecz biorąc, link Wstecz nie jest konieczny ... Przycisk Wstecz zwykle wystarcza całkiem dobrze, i zwykle możesz również po prostu przejść do poprzedniej strony w swojej witrynie. Czasami jednak możesz chcieć podać link z powrotem do jednej z kilku „poprzednich” stron i tam właśnie przydaje się link z powrotem. Jeśli więc chcesz zrobić to w bardziej zaawansowany sposób, odsyłam do poniższego samouczka:

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

Ruslan López
źródło
2
W przeciwieństwie do najczęściej głosowanych rozwiązań, zachowuje pozycję przewijania, którą miał użytkownik.
Ketri
@Ketri, czy możesz zapewnić wsparcie dla wyciągu? powinny być identyczne: w3schools.com/jsref/met_his_back.asp
FarO
8

Spróbuj tego

<a href="javascript:history.go(-1)"> Go Back </a>
mack
źródło
4
<a href="#" onclick="history.back();">Back</a>
Roee Gavirel
źródło
1

Możesz także użyć history.back()obok, document.write()aby wyświetlić link tylko wtedy, gdy faktycznie jest miejsce, do którego można wrócić:

<script>
  if (history.length > 1) {
    document.write('<a href="javascript:history.back()">Go back</a>');
  }
</script>
Leonid Wasilew
źródło
document.writenadpisuje wszystko na stronie. Dlaczego miałbyś tego używać?
jpaugh
Musisz wykonać ten skrypt, gdy strona wciąż się ładuje.
Leonid Vasilev
0

Najlepszym sposobem jest użycie przycisku

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

Ashutosh K Singh
źródło