JavaScript'te önceki URL nasıl alınır?
JavaScript'te önceki URL'yi almak için herhangi bir yol var mı? Şöyle bir şey:
alert("previous url is: " + window.history.previous.href);
Böyle bir şey var mı? Yoksa bunu bir çerezde mi saklamalıyım? Sadece bilmem gerekiyor ki önceki URL'den mevcut URL'ye geçişleri anchor'lar ve benzeri şeyler olmadan yapabileyim.
Cevap #1
document.referrer
Çoğu durumda, kullanıcı mevcut sayfaya bir bağlantıya tıklayarak ulaştıysa (doğrudan adres çubuğuna yazarak veya bazı durumlarda bir form göndererek?) ziyaret ettiği son sayfanın URL'sini almanızı sağlar. DOM Seviye 2 tarafından belirtilmiştir. Daha fazlası burada.
window.history gezinmeye izin verir, ancak güvenlik ve gizlilik nedenleriyle oturumdaki URL'lere erişim sağlamaz. Daha ayrıntılı bir URL geçmişi mevcut olsaydı, ziyaret ettiğiniz her site daha önce gittiğiniz tüm diğer siteleri görebilirdi.
Kendi siteniz içinde dolaşan durumla ilgileniyorsanız, o zaman muhtemelen daha az kırılgan ve kesinlikle daha yararlı olacaktır; normal oturum yönetimi tekniklerinden birini kullanmak: çerez verileri, URL parametreleri veya sunucu tarafı oturum bilgisi.
Cevap #2
URL'yi bilmeden önceki sayfaya gitmek istiyorsanız, yeni History 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.
Ama HTML5 History API’sini desteklemeyen tarayıcılarda geçmiş yığını içeriğini manipüle edemezsiniz
Daha fazla bilgi için belgelere bakın
Cevap #3
Eğer bir web uygulaması veya yönlendirmenin sunucuya gidip gelmek yerine uygulama/tarayıcı içinde gerçekleştiği tek sayfalık bir uygulama (SPA) yazıyorsanız, şunları yapabilirsiniz:
window.history.pushState({ prevUrl: window.location.href }, null, "/new/path/in/your/app")
Sonra, yeni rotanızda, önceki URL'yi almak için aşağıdakileri yapabilirsiniz:
window.history.state.prevUrl // your previous url
Cevap #4
document.referrer her durumda gerçek URL ile aynı değildir.
İki çerçeveli bir frameset oluşturmanız gereken bir uygulamam var. Bir çerçeve biliniyor, diğeri ise bağlantı verdiğim sayfa. Görünüşe göre document.referrer ideal olur çünkü gerçek dosya adını frameset belgesine iletmek zorunda kalmazsınız.
Ancak, daha sonra alt çerçeve sayfasını değiştirir ve ardından history.back() kullanırsanız, alt çerçeveye orijinal sayfa yüklenmez; bunun yerine document.referrer yeniden yüklenir ve sonuç olarak çerçeve yapısı kaybolur ve başlangıçtaki pencereye geri dönersiniz.
Bunu anlamam biraz zaman aldı. Yani history dizisinde, document.referrer sadece bir URL değil, görünüşe göre aynı zamanda yönlendiren pencere spesifikasyonu da. En azından, şu anda bunu anlayabileceğim en iyi yol bu.
Cevap #5
<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 gibi diğer popüler tarayıcılar için de çalışacaktır.
