Önceki URL'yi JavaScript'te nasıl edinebilirim?


231

JavaScript'te önceki URL'yi almanın herhangi bir yolu var mı? Bunun gibi bir şey:

alert("previous url is: " + window.history.previous.href);

Böyle bir şey var mı? Yoksa sadece bir çerezde saklamalı mıyım? Sadece bilmeniz gereken bu yüzden önceki URL'den mevcut URL'ye çapa ve tüm bunlar olmadan geçişler yapabilirim.

Yanıtlar:


353
document.referrer

birçok durumda, bir sayfayı tıklatarak geçerli sayfaya ulaşırsa, kullanıcının ziyaret ettiği son sayfanın URL'sini alırsınız (doğrudan adres çubuğuna yazmak yerine veya bazı durumlarda bir form göndererek inanıyorum?). DOM Seviye 2 tarafından belirtilmiştir . Daha fazla burada.

window.historygezinmeye izin verir, ancak güvenlik ve gizlilik nedeniyle oturumdaki URL'lere erişmez. Daha ayrıntılı URL geçmişi mevcutsa, ziyaret ettiğiniz her site, bulunduğunuz diğer tüm siteleri görebilir.

Kendi sitenizde dolaşan durumla uğraşıyorsanız, normal oturum yönetimi tekniklerinden birini kullanmak muhtemelen daha az kırılgan ve kesinlikle daha kullanışlıdır: çerez verileri, URL parametreleri veya sunucu tarafı oturum bilgileri.


4
Geçerli sayfaya bir bağlantı yoluyla ulaştıysanız (ancak örneğin yer işaretiyle veya adres çubuğuna yazarak) document.referrer da vardır.
Hellion

69
site için çerezleri önceki url depolamaya sona erdi, document.referrerher zaman işe yaramaz. $.cookie("previousUrl", window.location.href, {path:"/"});.
Lance Pollard

4
Efendim beni JavaScript'in acı dünyasından kurtardınız!
Anna Lam

8
önceki yönlendiren değil. onları karıştırmayın
Yeşil

1
document.referrer, karmaları son url'den kaydetmez ... yalnızca son url'yi belirtir.
Nmaster88

29

URL'yi bilmeden bir önceki sayfaya gitmek istiyorsanız, yeni Geçmiş api'sini kullanabilirsiniz.

history.back(); //Go to the previous page
history.forward(); //Go to the next page in the stack
history.go(index); //Where index could be 1, -1, 56, etc.

Ancak tarayıcıda HTML5 Geçmiş API'sını desteklemeyen geçmiş yığınının içeriğini değiştiremezsiniz

Daha fazla bilgi için dokümana bakın


2
URL'yi bilmekle nasıl yapılır, href = ''?
summu

@summu tarayıcının kendisinde saklanır
Ahmed Taha

21

document.referrer her durumda gerçek URL ile aynı değildir.

2 çerçeveli bir çerçeve kümesi kurmam gereken bir uygulamam var. Bir kare biliniyor, diğeri bağlantı verdiğim sayfa. Bu gibi görünüyor document.referrerEğer Çerçeve kümesi belgeye gerçek dosya adını geçmek olmazdı çünkü olurdu ideali.

Ancak, daha sonra alt çerçeve sayfasını değiştirir ve daha sonra kullanırsanız history.back(), orijinal sayfayı alt çerçeveye yüklemez, bunun yerine yeniden yüklenir document.referrerve sonuç olarak çerçeve kümesi kaybolur ve orijinal başlangıç ​​penceresine geri dönersiniz.

Bunu anlamak için biraz zamanımı aldı. Geçmiş dizisinde document.referreryalnızca bir URL değil, aynı zamanda yönlendirme penceresi belirtimi de var. En azından, şu anda anlamanın en iyi yolu bu.


En son testlerimden beri 'document.referrer' artık izlemeyi önlemek için tam URL'yi değil alan adını döndürüyor.
Akash Kumar Seth

12

Yönlendirmenin sunucuya gidiş-dönüş yerine uygulama / tarayıcıda gerçekleştiği bir web uygulaması veya tek sayfalık uygulama (SPA) yazıyorsanız, aşağıdakileri yapabilirsiniz:

window.history.pushState({ prevUrl: window.location.href }, null, "/new/path/in/your/app")

Ardından, yeni rotanızda, önceki URL'yi almak için aşağıdakileri yapabilirsiniz:

window.history.state.prevUrl // your previous url

0

Node.js ve Express kullananlarınız, geçerli sayfa URL'sini hatırlayacak bir oturum çerezi ayarlayabilir ve böylece bir sonraki sayfa yüklemesinde yönlendireni kontrol etmenize olanak tanır. İşte express-sessionara katman yazılımını kullanan bir örnek :

//Add me after the express-session middleware    
app.use((req, res, next) => {
    req.session.referrer = req.protocol + '://' + req.get('host') + req.originalUrl;
    next();
});

Daha sonra, bir yönlendirme çerezinin mevcut olup olmadığını kontrol edebilirsiniz:

if ( req.session.referrer ) console.log(req.session.referrer);

Önceki URL'nin başka bir web sitesi olduğu, oturumun temizlendiği veya yeni oluşturulduğu (ilk kez web sitesi yüklemesi) durumlarda kullanılamayacağından, bir yönlendirme çerezinin her zaman bu yöntemle bulunduğunu varsaymayın.


0
<script type="text/javascript">
    document.write(document.referrer);
</script>

document.referrer amacınıza hizmet eder, ancak IE9'dan önceki Internet Explorer sürümlerinde çalışmaz.

Chrome, Mozilla, Opera, Safari vb.Gibi diğer popüler tarayıcılarda çalışacaktır.


IE 9 benim için çalışıyor
frodo2975

-8

Bu, daha önce ziyaret edilen URL'ye gider.

javascript:history.go(-1)

1
OP önceki URL'ye nasıl gidileceğini değil, nasıl gidileceğini sordu
Matt Jensen
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.