2014-04-09 12 views
6

Tarih dizisinde dizi ve dizi dizini var. Stat ve okumaya devam ediyorum. Dizinin içeriğini okudum, iyi çalışıyor ama ilk sayfaya geri döndüğümde dizi (normaldir) gitti, ancak ileriye doğru tarih durumu kalır.Temizlemek için pushState tarafından yaratılan html geçmişini temizle

PushState kullanılarak oluşturulan sahte geçmişin kaldırılması mümkün mü?

Durumumu yerel dizimde saklayamadım çünkü durum dizimde işlevleri var. Eğer specification of History API for pushState, adımda 4 devletler okursanız

+0

Sen pageload üzerinde pushState veya replaceState kullanarak yeni bir devlet kurmak olabilir, ileriye geçmişini kaldıracaktır. – LawfulHacker

cevap

7

  1. yöntem pushState() yöntem oldu çağrılan ise:
    tarama bağlam yıllarda tüm girdileri kaldırın Geçerli giriş tarihinden sonra oturum geçmişi. Geçerli giriş oturum geçmişindeki son girdiyse, hiçbir giriş kaldırılmaz.

Yani yapmaya çalışıyoruz ne bağlı olarak, ilk sayfayı yüklerken için özel bir durum yapmak ve bir devlet itebilecek (eğer ele alacağız birini senin ilk) ve çok net yaparken tarihin ileri devletleri.

+2

Neredeyse işe yarıyor, ancak pushState onInit (yenileme) oluşturduğumda, tarihte iki sayfa, orijinal gerçek sayfa ve pushState'ten sahte bir tane var. replaceState ayrıca çalışmaz, çünkü geçmişi yalnızca geçerli olanı değiştirmez. Mükemmel değil, ama muhtemelen daha iyisini yapamazsın. – jcubic

2

seans geçmişini temizlemek için veya imtiyazsız koddan geri/ileri gezinmeyi devre dışı bırakmak için hiçbir yolu yoktur. En yakın kullanılabilir çözümü, sağlanan URL ile oturum geçmişinin geçerli öğesinin yerini alan location.replace() yöntemidir. Mozilla

tek yolu bu (ama sanırım bunu biliyorsun) kullanıcıyı, yani mevcut sayfa oturumu geçmişinde kaydedilmez) (replace kullandıktan sonra

var length=history.length;  
history.go(-length); 
window.location.replace("urlToRedirect"); 

olmaz ise Gezinmek için Geri düğmesini kullanabilirsiniz. -

+0

Bununla birlikte, kullanıcı ileriye gidebilir, çünkü değiştir öndeki geçmişi kaldırmaz. – modiX

2

Benim fikrim bütün geçmişini geçersiz:

for (i = 0; i < 50; i++) { 
 
    history.pushState({}, ''); 
 
}