Tarayıcılar, window.history
nesnesi aracılığıyla bir istemci oturumu içinde ziyaret edilen sayfaların bir listesini sağlar. Bununla birlikte, istemci kodu listede ileri ve geri gidebilir (history.back()
, history.forward()
ve history.go()
kullanarak).Tarayıcı geçmişinde geçerli konum dizini nasıl bulunur?
Ancak, istemci kodu, geçerli sayfanın bulunduğu tarihte nerede nerede belirleyebilir? Örneğin, istemci A, B ve C sayfalarını ziyaret ederse, geçmiş üç öğe içerir ve geçerli geçmiş öğesi (veya durum) sayfa C olacaktır. Eğer kullanıcı daha sonra 'geri' düğmesini tıklatırsa, geçerli sayfa şimdi B'dir. Bununla birlikte, history.length
hala 3'tür, bu da toplamda üç sayfanın ziyaret edildiğini yansıtır. Müşterinin şu anda tarihte 2. maddede olduğunu nasıl belirliyoruz?
Daha özel bir sorun, geçmişte ilk öğede konumlandırılıp konumlandırılmadığımı belirlemek istiyorum, böylece sayfayı kapatacak bir 'Kapat' düğmesi görüntüleyebilirim (window.opener
'un boş olmadığını varsayarak); geçmişte herhangi bir başka konumda, bir önceki sayfaya gidilecek olan 'Geri' düğmesini görüntülemek istiyorum.
Bu, tarih nesnesinde 'geçerli dizin' olmadığını merak eden bir ihmal gibi görünüyor.
Not: Bu, question #12895940'a benzer, ancak aslında sadece tarihin ilk konumunda konumlandırıldığımı bilmem gerektiğinden farklıdır. Bu tarih yığını sayfa ilk yüklendiğinde üzerine durum nesnesi iter
// Onload
{
if (!history.state && typeof(history.replaceState) == "function")
history.replaceState({ page: history.length, href: location.href }, "foo");
}
:
[şu anda tarayıcı geçmişinde nerede olduğunu bul] olası bir kopyası (http://stackoverflow.com/questions/12895940/find-out-where-in-browser-history-the-user-is) – duskwuff
As Yukarıdaki konuya (@duskwuff) söylendiği gibi, "her zaman" tarihini takip etmek için bir web uzantısı gibi bir şey oluşturmadıkça bunu JavaScript'te yapmanın bir yolu olmadığını düşünüyorum. Ama bahse girerim aradığınız çözüm değil – lockedz