HTML geri bağlantısı nasıl yapılır?


287

<a>Önceki web sayfasına bağlantı veren bir etiket oluşturmanın en basit yolu nedir ? Temel olarak simüle edilmiş bir geri düğmesi, ancak gerçek bir köprü. Sadece müşteri tarafı teknolojiler lütfen.

Düzenle
Fareyle üzerine gelindiğinde tıklamak üzere olduğunuz sayfanın URL'sini gösterme avantajına sahip, normal, statik bir köprü gibi çözümlere bakmak. Kullanıcı history.go(-1)bir köprüde gezinirken bakmamayı tercih eder. Şimdiye kadar bulduğum en iyi şey:

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

document.referrergüvenilir? Çapraz tarayıcı güvenli mi? Daha iyi bir cevap kabul etmekten memnuniyet duyarım.


2
JavaScript, istemci tarafı bir teknolojidir, bazı istemciler (benim gibi) yalnızca devre dışı bırakmayı seçer (varsayılan olarak). Bu müşterinin gücü! : D Ama evet, HTML'nin bir önceki sayfanın ne olduğunu belirlemesi mümkün değil.
animuson

Yanıtlar:


514

Ve başka bir yol:

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


9
Ve bir düğme için:<button type="button" onclick="javascript:history.back()">Back</button>
Leo

1
Bu yaklaşımın bir dezavantajı, "URL'yi görmek için fareyle üzerine gelin" ve sağ tıklama -> kopyala bağlantısı gibi standart tarayıcı özelliklerinin bozulmasıdır.
Vivek Maharajh

Bence daha çok anlambilim ile ilgili. Geri gitme "düğmesi" geri gitme "bağlantısından" daha uygundur. Her iki seçenek de harika ve her iki seçenek de kendi yollarıyla doğru.
Jaspreet Singh

111

Bu çözüm, çoğu tarayıcının varsayılan olarak history.go(-1)veya benzer bir şekilde yaptığı gibi fareyle bağlantılı sayfanın URL'sini fareyle üzerine getirme avantajına sahiptir :

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

9
Bu ayrıca, yönlendiren sayfanın target="_blank"bağlantıda bir öznitelikle açıldığı ve history.go(-1)bunu yapmadığı durumu da kapsamaktadır.
Chris Krycho

4
Bu çözüm # takip eden bağlantı kısmını kaybeder, 'javascript: history.back ()' düzgün çalışır.
Liviu

16
Bu çözümün dezavantajı, birden fazla sayfaya geri dönemeyeceğinizdir. Misal; a, b, c, d sayfalarına gidin - c, d, c, d, c, d tuşlarına art arda basın. Bunu .history.back () ile karşılaştırın a, b, c, d arka arkaya düğmesine tekrar tekrar basın d, c, b, a
atreeon

Bunu nasıl yapabilirim ki, arka sayfa olmaması durumunda, sabit bir URL'ye yönlendirinhistory.back() || "myaction/mycontroller"
yuva

@orangesherbert Bunu yeni bir yanıtta ele aldım ("URL göster" şartını da yerine getirdim.)
Vivek Maharajh

44

En kolay yol history.go(-1);

Bunu dene:

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


41

javascript'i deneyebilirsiniz

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

JavaScript Geri Düğmesine bakın

DÜZENLE

http://www.javascriptkit.com/javatutors/crossmenu2.shtml adresindeki URL’yi görüntülemek için

ve elementin kendisini aşağıdaki gibi son derece

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>

jsfiddle'ı kontrol et


son düzenlemeyi açıklayabilir misin? Ben sadece çoğu tarayıcının altında gösterildiği gibi normal bir bağlantı istiyorum.
paislee

tüm tarayıcılar herkes için gösterir hiçbir şey yapmanıza gerek yok ama kendi bölgenizde göstermek istiyorsanız tabledescription, bağlantı etiketi üzerinde fare bir bağlantı göstermek için sayfanın herhangi bir yerinde bir div belirtebilirsiniz
Hemant Metalia

40

Bu çözüm size her iki dünyanın en iyisini sunar

  • Kullanıcılar, URL’yi görmek için fareyle bağlantının üzerine gelebilir
  • Kullanıcılar bozuk bir yığınla sonuçlanmaz

Aşağıdaki kod yorumlarında daha fazla ayrıntı.

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>


Müthiş cevap. Bunu hemen hemen tüm nakavt projelerimde özel ciltleme bağlamında kullanıyorum.
pimbrouwers

Mükemmel cevap! return false;Geçerli sayfayı tarayıcı geçmişine eklemesini engellemek için Chrome'da onclick işlevine eklemek zorunda kaldım .
Marshall Morrise

25

Çapa Etiketi kullanarak bir önceki sayfaya geri dönüyor için <a>aşağıdaki 2 çalışma yöntemleri ve bunlardan dışarı 1 biridir olduğu hızlı ve sahip büyük bir avantajı önceki sayfaya geri gidiş.

Her iki yöntemi de denedim.

1)

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

Yukarıdaki yöntem (1) , geçerli tarayıcı penceresinde Yeni Bir Sekmede bir bağlantıyı tıklayıp bağlantıyı açtıysanız harika çalışır .

2)

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

Yukarıdaki yöntem (2) yalnızca geçerli tarayıcı penceresindeki Geçerli Sekmede bir bağlantıyı tıklatıp bağlantıyı açtıysanız tamam çalışır .

Yeni Sekmede açık bağlantınız varsa çalışmaz. İşte history.back()bağlantı web tarayıcısının Yeni Sekmede açılırsa çalışmaz.


18

Arka bağlantı, kullanıcı çoğu tarayıcıda bulunan Geri düğmesini tıklamış gibi tarayıcıyı bir sayfa geriye taşıyan bir bağlantıdır. Geri bağlantılar JavaScript kullanır. Tarayıcınız JavaScript'i (destekliyorsa) destekliyorsa ve window.historyarka bağlantılar için gerekli olan nesneyi destekliyorsa tarayıcıyı bir sayfa geri taşır .

Basit yollar

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

VEYA:

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

Genel olarak bir arka bağlantıdan bahsetmek gerekli değildir ... Geri düğmesi genellikle oldukça güzeldir ve genellikle sitenizdeki bir önceki sayfaya da bağlayabilirsiniz. Bununla birlikte, bazen birkaç "önceki" sayfadan birine geri bağlantı sağlamak isteyebilirsiniz ve arka bağlantı kullanışlı olur. Bu yüzden daha gelişmiş bir şekilde yapmak istiyorsanız aşağıdaki öğreticiye başvuruyorum:

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


2
En çok oy alan çözümün aksine, kullanıcının sahip olduğu kaydırma konumunu korur.
Ketri

@Ketri açıklama için destek sağlayabilir misiniz? Onlar aynı olmalıdır: w3schools.com/jsref/met_his_back.asp
Faro

8

bunu dene

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


1

history.back()Yanı sıra document.write(), yalnızca geri dönecek bir yer olduğunda bağlantıyı göstermek için de kullanabilirsiniz :

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

document.writesayfadaki her şeyin üzerine yazar. Bunu neden hiç kullandın?
jpaugh

Sayfa yüklenirken bu komut dosyasını yürütmeniz gerekir.
Leonid Vasilev

0

Düğme kullanmanın en iyi yolu

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.